X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fversion.c;h=54545cb9d46ff59112b4b30a028a4fb5877d0766;hb=4c23dcdab4f9c9941eb245bda2ff65371fca13d7;hp=e3541d06aca1e3533a8c96f8de4f3d7a52f92310;hpb=857ca43d65fe6a52474641130312d26d125bef15;p=m6w6%2Flibmemcached diff --git a/libmemcached/version.c b/libmemcached/version.c index e3541d06..54545cb9 100644 --- a/libmemcached/version.c +++ b/libmemcached/version.c @@ -13,10 +13,19 @@ memcached_return_t memcached_version(memcached_st *ptr) if (ptr->flags.use_udp) return MEMCACHED_NOT_SUPPORTED; + bool was_blocking= ptr->flags.no_block; + memcached_return_t rc; + + ptr->flags.no_block= false; + if (ptr->flags.binary_protocol) - return memcached_version_binary(ptr); + rc= memcached_version_binary(ptr); else - return memcached_version_textual(ptr); + rc= memcached_version_textual(ptr); + + ptr->flags.no_block= was_blocking; + + return rc; } static inline memcached_return_t memcached_version_textual(memcached_st *ptr) @@ -33,7 +42,7 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr) for (uint32_t x= 0; x < memcached_server_count(ptr); x++) { memcached_return_t rrc; - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); rrc= memcached_do(instance, command, send_length, true); @@ -69,18 +78,17 @@ static inline memcached_return_t memcached_version_textual(memcached_st *ptr) static inline memcached_return_t memcached_version_binary(memcached_st *ptr) { memcached_return_t rc; - unsigned int x; protocol_binary_request_version request= { .bytes= {0}}; request.message.header.request.magic= PROTOCOL_BINARY_REQ; request.message.header.request.opcode= PROTOCOL_BINARY_CMD_VERSION; request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES; rc= MEMCACHED_SUCCESS; - for (x= 0; x < memcached_server_count(ptr); x++) + for (uint32_t x= 0; x < memcached_server_count(ptr); x++) { memcached_return_t rrc; - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); rrc= memcached_do(instance, request.bytes, sizeof(request.bytes), true); @@ -92,9 +100,9 @@ static inline memcached_return_t memcached_version_binary(memcached_st *ptr) } } - for (x= 0; x < memcached_server_count(ptr); x++) + for (uint32_t x= 0; x < memcached_server_count(ptr); x++) { - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); if (memcached_server_response_count(instance) > 0)