summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrond Norbye <trond.norbye@gmail.com>2011-04-27 22:03:50 +0200
committerTrond Norbye <trond.norbye@gmail.com>2011-04-27 22:04:29 +0200
commitd454134c663c3c0ae380c6a960b179f641579d28 (patch)
tree0fc3914a95ae7a9de9b975491fb640c681f7db01
parent0fdff42f786cf499d4103e4ed5d310f77ea3f1c3 (diff)
downloadmemcached-d454134c663c3c0ae380c6a960b179f641579d28.tar.gz
Unregister events if we get callback from closed events
-rw-r--r--daemon/memcached.c9
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;
}