diff options
author | Trond Norbye <trond.norbye@gmail.com> | 2011-04-27 22:03:50 +0200 |
---|---|---|
committer | Trond Norbye <trond.norbye@gmail.com> | 2011-04-27 22:04:29 +0200 |
commit | d454134c663c3c0ae380c6a960b179f641579d28 (patch) | |
tree | 0fc3914a95ae7a9de9b975491fb640c681f7db01 | |
parent | 0fdff42f786cf499d4103e4ed5d310f77ea3f1c3 (diff) | |
download | memcached-d454134c663c3c0ae380c6a960b179f641579d28.tar.gz |
Unregister events if we get callback from closed events
-rw-r--r-- | daemon/memcached.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/daemon/memcached.c b/daemon/memcached.c index 9c706d7..a53498f 100644 --- a/daemon/memcached.c +++ b/daemon/memcached.c @@ -5538,11 +5538,14 @@ void event_handler(const int fd, const short which, void *arg) { /* sanity */ if (fd != c->sfd) { - if (settings.verbose > 0) { - settings.extensions.logger->log(EXTENSION_LOG_WARNING, c, + if (c->sfd != INVALID_SOCKET) { + settings.extensions.logger->log(EXTENSION_LOG_INFO, c, "Catastrophic: event fd doesn't match conn fd!\n"); } - conn_close(c); + unregister_event(c); + if (c->sfd != INVALID_SOCKET && c->thread != NULL) { + conn_close(c); + } return; } |