+ buffer_ptr= buffer;
+ while (1)
+ {
+ unsigned int read_length;
+ read_length= recv(ptr->hosts[server_key].fd, buffer_ptr, 1, 0);
+
+ if (read_length != 1)
+ return MEMCACHED_UNKNOWN_READ_FAILURE;
+
+ if (*buffer_ptr == '\n')
+ break;
+ else
+ buffer_ptr++;
+ }
+
+ switch(buffer[0])
+ {
+ case 'V': /* VALUE */
+ return MEMCACHED_SUCCESS;
+ case 'O': /* OK */
+ return MEMCACHED_SUCCESS;
+ case 'S': /* STORED STATS SERVER_ERROR */
+ {
+ if (buffer[1] == 'T') /* STORED STATS */
+ return MEMCACHED_SUCCESS;
+ else if (buffer[1] == 'E')
+ return MEMCACHED_SERVER_ERROR;
+ else
+ return MEMCACHED_UNKNOWN_READ_FAILURE;
+ }
+ case 'D': /* DELETED */
+ return MEMCACHED_SUCCESS;
+ case 'N': /* NOT_FOUND */
+ {
+ if (buffer[4] == 'F')
+ return MEMCACHED_NOTFOUND;
+ else if (buffer[4] == 'S')
+ return MEMCACHED_NOTSTORED;
+ else
+ return MEMCACHED_UNKNOWN_READ_FAILURE;
+ }
+ case 'E': /* PROTOCOL ERROR or END */