X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_io.c;h=de3eda32875460018fa4aa320237197be0d40d53;hb=f45cff13d17432059886e6f426d3c8c4d1f23732;hp=daf64755c69ce171234c4c026aee925009aad9eb;hpb=46c20d43fbb4f84f30e06a55702c58c17f498d0e;p=m6w6%2Flibmemcached diff --git a/lib/memcached_io.c b/lib/memcached_io.c index daf64755..de3eda32 100644 --- a/lib/memcached_io.c +++ b/lib/memcached_io.c @@ -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,