Bad data for threads (Toru patch)
[m6w6/libmemcached] / libmemcached / memcached_io.c
index 38544102bcc54765101b25e2beb68e4390db639d..93ca41732d4ca26741c2c905e10e9ea001795e15 100644 (file)
@@ -204,9 +204,14 @@ ssize_t memcached_io_write(memcached_server_st *ptr,
   return original_length;
 }
 
-memcached_return memcached_io_close(memcached_server_st *ptr)
+memcached_return memcached_io_close(memcached_server_st *ptr, uint8_t io_death)
 {
-  close(ptr->fd);
+  /* in case of death shutdown to avoid blocking at close() */
+
+  if (io_death)
+    shutdown(ptr->fd, SHUT_RDWR);
+  else
+    close(ptr->fd);
 
   return MEMCACHED_SUCCESS;
 }