Getting everything ready for non-blocking IO.
[m6w6/libmemcached] / lib / memcached_response.c
index cb74be0a911c6f1fe9ba383299de8c5f668ca199..42a06411175db1e664ac80e5d5bef1cc748c0324 100644 (file)
@@ -6,6 +6,7 @@
 */
 
 #include "common.h"
+#include "memcached_io.h"
 
 memcached_return memcached_response(memcached_st *ptr, 
                                     char *buffer, size_t buffer_length,
@@ -21,7 +22,9 @@ memcached_return memcached_response(memcached_st *ptr,
   while (1)
   {
     unsigned int read_length;
-    read_length= recv(ptr->hosts[server_key].fd, buffer_ptr, 1, 0);
+
+    read_length= memcached_io_read(ptr, server_key,
+                                   buffer_ptr, 1);
 
     if (read_length != 1)
       return  MEMCACHED_UNKNOWN_READ_FAILURE;
@@ -40,10 +43,12 @@ memcached_return memcached_response(memcached_st *ptr,
     return MEMCACHED_SUCCESS;
   case 'S': /* STORED STATS SERVER_ERROR */
     {
-      if (buffer[1] == 'T') /* STORED STATS */
+      if (buffer[2] == 'A') /* STORED STATS */
         return MEMCACHED_SUCCESS;
       else if (buffer[1] == 'E')
         return MEMCACHED_SERVER_ERROR;
+      else if (buffer[1] == 'T')
+        return MEMCACHED_STORED;
       else
         return MEMCACHED_UNKNOWN_READ_FAILURE;
     }