X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fio.cc;h=b08473a0c9bef42206d352c542f34a336c1549ad;hb=262486489d4dec5f7af6046a27b9e6b337b45ea9;hp=c848b6318e5bd5f7e14960bd2be16028aaa2b5cb;hpb=728ffce13e3e3b78d0144ea1e304dee1c1055384;p=m6w6%2Flibmemcached diff --git a/libmemcached/io.cc b/libmemcached/io.cc index c848b631..b08473a0 100644 --- a/libmemcached/io.cc +++ b/libmemcached/io.cc @@ -213,8 +213,18 @@ static memcached_return_t io_wait(memcached_server_write_instance_st ptr, if (active_fd >= 1) { + if (fds.revents & POLLHUP) + { + break; + } assert_msg(active_fd == 1 , "poll() returned an unexpected value"); - return MEMCACHED_SUCCESS; + + if (fds.revents & POLLIN or fds.revents & POLLOUT) + { + return MEMCACHED_SUCCESS; + } + + return memcached_set_error(*ptr, MEMCACHED_FAILURE, MEMCACHED_AT, memcached_literal_param("poll() returned a value that was not dealt with")); } else if (active_fd == 0) {