X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_get.c;h=12d301ec35319d0faabbe336f75e002a0d024777;hb=8ce1a267a6593221cdd887643517364694ea985f;hp=374793f5346e485718c9436ca7d679006178cabe;hpb=4012fdfefb1d0566398225cd280d9c3996960779;p=awesomized%2Flibmemcached diff --git a/lib/memcached_get.c b/lib/memcached_get.c index 374793f5..12d301ec 100644 --- a/lib/memcached_get.c +++ b/lib/memcached_get.c @@ -50,22 +50,22 @@ char *memcached_get_by_key(memcached_st *ptr, do { + char response_buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; + if (memcached_server_response_count(&ptr->hosts[server_key])) { - char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; - if (ptr->flags & MEM_NO_BLOCK) (void)memcached_io_write(&ptr->hosts[server_key], NULL, 0, 1); while(memcached_server_response_count(&ptr->hosts[server_key])) - (void)memcached_response(&ptr->hosts[server_key], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, result_buffer); + (void)memcached_response(&ptr->hosts[server_key], response_buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, result_buffer); } rc[replicas]= memcached_do(&ptr->hosts[server_key], buffer, send_length, 1); if (rc[replicas] != MEMCACHED_SUCCESS) goto error; - rc[replicas]= memcached_response(&ptr->hosts[server_key], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, result_buffer); + rc[replicas]= memcached_response(&ptr->hosts[server_key], response_buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, result_buffer); /* On no key found, we check the replica */ if (rc[replicas] == MEMCACHED_END) /* END means that we move on to the next */ @@ -79,12 +79,13 @@ char *memcached_get_by_key(memcached_st *ptr, if (result_buffer->flags) *flags= result_buffer->flags; + *error= MEMCACHED_SUCCESS; return memcached_string_c_copy(&result_buffer->value); } /* On error we just jump to the next potential server */ error: - if (replicas > 1 && ptr->distribution == MEMCACHED_DISTRIBUTION_CONSISTENT) + if (ptr->number_of_replicas > 1) { if (server_key == (ptr->number_of_hosts - 1)) server_key= 0;