X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_response.c;h=693f9b30520a71c0f21f875ffc095090b25e8c6f;hb=dd3711e0fb5dc8ea96253ca28db3d1fe3067a920;hp=09d1fa4d8b91bc0a8725a69ad9ef1255a4745d50;hpb=1f34771f7ba527e3afb675f1a448d6c5ab66596b;p=m6w6%2Flibmemcached diff --git a/lib/memcached_response.c b/lib/memcached_response.c index 09d1fa4d..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->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: