#include <memcached.h>
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])
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: