X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmemcached_response.c;h=6ec120c8662208e2ed7a8eb1f7ba2f1c7dc0eab1;hb=cfe8176feba42fc63e8f627f9ac613a12a368b92;hp=a695e9d8c40881eb40ec7f589c6d29407c45eeb2;hpb=79892ee7f064bbbb7768ec7ed700655da2c35275;p=m6w6%2Flibmemcached diff --git a/lib/memcached_response.c b/lib/memcached_response.c index a695e9d8..6ec120c8 100644 --- a/lib/memcached_response.c +++ b/lib/memcached_response.c @@ -10,6 +10,7 @@ memcached_return memcached_response(memcached_st *ptr, char *buffer, size_t buffer_length, + memcached_result_st *result, unsigned int server_key) { unsigned int x; @@ -20,6 +21,10 @@ memcached_return memcached_response(memcached_st *ptr, send_length= 0; + /* We may have old commands in the buffer not set, first purge */ + if (ptr->flags & MEM_NO_BLOCK) + (void)memcached_io_write(ptr, server_key, NULL, 0, 1); + max_messages= memcached_server_response_count(ptr, server_key); for (x= 0; x < max_messages; x++) { @@ -58,9 +63,16 @@ memcached_return memcached_response(memcached_st *ptr, case 'V': /* VALUE || VERSION */ if (buffer[1] == 'A') /* VALUE */ { + memcached_return rc; + /* We add back in one because we will need to search for END */ memcached_server_response_increment(ptr, server_key); - return MEMCACHED_SUCCESS; + if (result) + rc= value_fetch(ptr, buffer, result, server_key); + else + rc= value_fetch(ptr, buffer, &ptr->result, server_key); + + return rc; } else if (buffer[1] == 'E') /* VERSION */ {