X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_version.c;h=db2419cfab3ef927a38e130348d6ab598bfe906b;hb=a246ac50a88e4af750fd2dd209eff94dcadf72d2;hp=0a77529c7d1ed5ab1926c903a774fe0082728791;hpb=2b312deb8b7b3f662b492f94a13e673723387724;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_version.c b/libmemcached/memcached_version.c index 0a77529c..db2419cf 100644 --- a/libmemcached/memcached_version.c +++ b/libmemcached/memcached_version.c @@ -5,32 +5,35 @@ const char * memcached_lib_version(void) return LIBMEMCACHED_VERSION_STRING; } -static inline memcached_return memcached_version_binary(memcached_st *ptr); -static inline memcached_return memcached_version_textual(memcached_st *ptr); +static inline memcached_return_t memcached_version_binary(memcached_st *ptr); +static inline memcached_return_t memcached_version_textual(memcached_st *ptr); -memcached_return memcached_version(memcached_st *ptr) +memcached_return_t memcached_version(memcached_st *ptr) { - if (ptr->flags & MEM_BINARY_PROTOCOL) - return memcached_version_binary(ptr); - else - return memcached_version_textual(ptr); + if (ptr->flags.use_udp) + return MEMCACHED_NOT_SUPPORTED; + + if (ptr->flags.binary_protocol) + return memcached_version_binary(ptr); + else + return memcached_version_textual(ptr); } -static inline memcached_return memcached_version_textual(memcached_st *ptr) +static inline memcached_return_t memcached_version_textual(memcached_st *ptr) { unsigned int x; size_t send_length; - memcached_return rc; + memcached_return_t rc; char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; char *response_ptr; - char *command= "version\r\n"; + const char *command= "version\r\n"; send_length= strlen(command); rc= MEMCACHED_SUCCESS; for (x= 0; x < ptr->number_of_hosts; x++) { - memcached_return rrc; + memcached_return_t rrc; rrc= memcached_do(&ptr->hosts[x], command, send_length, 1); if (rrc != MEMCACHED_SUCCESS) @@ -41,7 +44,10 @@ static inline memcached_return memcached_version_textual(memcached_st *ptr) rrc= memcached_response(&ptr->hosts[x], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL); if (rrc != MEMCACHED_SUCCESS) + { rc= MEMCACHED_SOME_ERRORS; + continue; + } /* Find the space, and then move one past it to copy version */ response_ptr= index(buffer, ' '); @@ -59,9 +65,9 @@ static inline memcached_return memcached_version_textual(memcached_st *ptr) return rc; } -static inline memcached_return memcached_version_binary(memcached_st *ptr) +static inline memcached_return_t memcached_version_binary(memcached_st *ptr) { - memcached_return rc; + memcached_return_t rc; unsigned int x; protocol_binary_request_version request= { .bytes= {0}}; request.message.header.request.magic= PROTOCOL_BINARY_REQ; @@ -71,7 +77,7 @@ static inline memcached_return memcached_version_binary(memcached_st *ptr) rc= MEMCACHED_SUCCESS; for (x= 0; x < ptr->number_of_hosts; x++) { - memcached_return rrc; + memcached_return_t rrc; rrc= memcached_do(&ptr->hosts[x], request.bytes, sizeof(request.bytes), 1); if (rrc != MEMCACHED_SUCCESS) @@ -85,7 +91,7 @@ static inline memcached_return memcached_version_binary(memcached_st *ptr) for (x= 0; x < ptr->number_of_hosts; x++) if (memcached_server_response_count(&ptr->hosts[x]) > 0) { - memcached_return rrc; + memcached_return_t rrc; char buffer[32]; char *p; @@ -94,6 +100,7 @@ static inline memcached_return memcached_version_binary(memcached_st *ptr) { memcached_io_reset(&ptr->hosts[x]); rc= MEMCACHED_SOME_ERRORS; + continue; } ptr->hosts[x].major_version= (uint8_t)strtol(buffer, &p, 10);