X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_response.c;h=693f9b30520a71c0f21f875ffc095090b25e8c6f;hb=dd3711e0fb5dc8ea96253ca28db3d1fe3067a920;hp=99020559dfd57de419ce7daeaf3daae3ba367e86;hpb=1fc4b1ae18810551553837b4c67c6075f1ad5941;p=m6w6%2Flibmemcached diff --git a/lib/memcached_response.c b/lib/memcached_response.c index 99020559..693f9b30 100644 --- a/lib/memcached_response.c +++ b/lib/memcached_response.c @@ -8,12 +8,13 @@ #include memcached_return memcached_response(memcached_st *ptr, - char *buffer, size_t buffer_length) + char *buffer, size_t buffer_length, + unsigned int server_key) { size_t send_length; memset(buffer, 0, buffer_length); - send_length= read(ptr->hosts[0].fd, buffer, buffer_length); + send_length= read(ptr->hosts[server_key].fd, buffer, buffer_length); if (send_length) switch(buffer[0]) @@ -42,8 +43,15 @@ memcached_return memcached_response(memcached_st *ptr, else return MEMCACHED_UNKNOWN_READ_FAILURE; } - case 'E': /* PROTOCOL ERROR */ - return MEMCACHED_PROTOCOL_ERROR; + case 'E': /* PROTOCOL ERROR or END */ + { + if (buffer[1] == 'N') + return MEMCACHED_NOTFOUND; + else if (buffer[1] == 'R') + return MEMCACHED_PROTOCOL_ERROR; + else + return MEMCACHED_UNKNOWN_READ_FAILURE; + } case 'C': /* CLIENT ERROR */ return MEMCACHED_CLIENT_ERROR; default: