Extend pool API for fetch/release. Fix concurrency issue in test case.
[m6w6/libmemcached] / libmemcached / io.cc
index f706048e71341289add79a30931d529c5825de03..e97a6c88ed68825ea6cbdd14629871e39329408c 100644 (file)
@@ -306,7 +306,6 @@ static ssize_t io_flush(memcached_server_write_instance_st ptr,
       return -1;
     }
   }
-  ssize_t sent_length;
   size_t return_length;
   char *local_write_ptr= ptr->write_buffer;
   size_t write_length= ptr->write_buffer_offset;
@@ -340,10 +339,10 @@ static ssize_t io_flush(memcached_server_write_instance_st ptr,
   {
     WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
     WATCHPOINT_ASSERT(write_length > 0);
-    sent_length= 0;
     if (ptr->type == MEMCACHED_CONNECTION_UDP)
       increment_udp_message_id(ptr);
 
+    ssize_t sent_length= 0;
     WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
     if (with_flush)
     {
@@ -408,7 +407,7 @@ static ssize_t io_flush(memcached_server_write_instance_st ptr,
     }
 
     if (ptr->type == MEMCACHED_CONNECTION_UDP and
-        (size_t)sent_length != write_length)
+        size_t(sent_length) != write_length)
     {
       memcached_quit_server(ptr, true);
       *error= memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT);
@@ -547,8 +546,8 @@ memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
     }
   }
 
-  ptr->server_failure_counter= 0;
   *nread = (ssize_t)(buffer_ptr - (char*)buffer);
+
   return MEMCACHED_SUCCESS;
 }
 
@@ -846,10 +845,11 @@ memcached_return_t memcached_safe_read(memcached_server_write_instance_st ptr,
 
 memcached_return_t memcached_io_readline(memcached_server_write_instance_st ptr,
                                          char *buffer_ptr,
-                                         size_t size)
+                                         size_t size,
+                                         size_t& total_nr)
 {
+  total_nr= 0;
   bool line_complete= false;
-  size_t total_nr= 0;
 
   while (not line_complete)
   {