Cleanup of linger call.
[m6w6/libmemcached] / lib / memcached_io.c
index daf64755c69ce171234c4c026aee925009aad9eb..de3eda32875460018fa4aa320237197be0d40d53 100644 (file)
@@ -150,36 +150,22 @@ ssize_t memcached_io_write(memcached_st *ptr, unsigned int server_key,
 
 memcached_return memcached_io_close(memcached_st *ptr, unsigned int server_key)
 {
-  memcached_return rc;
-
-  rc= MEMCACHED_SUCCESS;
-  if (ptr->flags & MEM_NO_BLOCK)
+  if (ptr->flags & MEM_NO_BLOCK && 0)
   {
+    int sock_size;
     int error;
-    struct pollfd fds[1];
-    short flags= 0;
-
-    flags= POLLHUP |  POLLERR;
-
-    memset(&fds, 0, sizeof(struct pollfd));
-    fds[0].fd= ptr->hosts[server_key].fd;
-    fds[0].events= flags;
-    fds[0].revents= 0;
+    socklen_t sock_length;
 
-    error= poll(fds, 1, ptr->poll_timeout == -1 ? 100 : ptr->poll_timeout);
+    error= getsockopt(ptr->hosts[server_key].fd, IPPROTO_TCP, SO_LINGER,
+                      &sock_size, &sock_length);
 
-    if (error == -1)
-    {
-      memcached_quit_server(ptr, server_key, 1);
-      return MEMCACHED_FAILURE;
-    }
-    else if (error == 0)
-      return MEMCACHED_FAILURE; /* Timeout occurred */
+    WATCHPOINT_NUMBER(error);
+    WATCHPOINT_NUMBER(sock_size);
   }
 
   close(ptr->hosts[server_key].fd);
 
-  return rc;
+  return MEMCACHED_SUCCESS;
 }
 
 static ssize_t io_flush(memcached_st *ptr, unsigned int server_key,