Merge Trond.
[m6w6/libmemcached] / libmemcached / memcached_flush_buffers.c
index 0a0fffb62892039ac24f70d737f701058071d2bb..bbf095493abf7ecb3f3a3a453d0622205b9b34db 100644 (file)
@@ -5,9 +5,18 @@ memcached_return memcached_flush_buffers(memcached_st *mem)
 {
   memcached_return ret= MEMCACHED_SUCCESS;
 
-  for (int x= 0; x < mem->number_of_hosts; ++x)
-    if (memcached_io_write(&mem->hosts[x], NULL, 0, 1) == -1)
-      ret= MEMCACHED_SOME_ERRORS;
+  for (uint32_t x= 0; x < mem->number_of_hosts; ++x)
+    if (mem->hosts[x].write_buffer_offset != 0) 
+    {
+      if (mem->hosts[x].fd == -1 &&
+          (ret= memcached_connect(&mem->hosts[x])) != MEMCACHED_SUCCESS)
+      {
+        WATCHPOINT_ERROR(ret);
+        return ret;
+      }
+      if (memcached_io_write(&mem->hosts[x], NULL, 0, 1) == -1)
+        ret= MEMCACHED_SOME_ERRORS;
+    }
 
   return ret;
 }