diff options
author | Trond Norbye <trond.norbye@gmail.com> | 2011-05-02 22:13:46 +0200 |
---|---|---|
committer | Trond Norbye <trond.norbye@gmail.com> | 2011-07-11 16:22:38 +0200 |
commit | 3dc5964d9309bf8b4757c523a4491b61ca3ba8b8 (patch) | |
tree | 1b83f51fc27d68be80704a89eacc03ea55102415 | |
parent | c13692d3df1ebe7f1f7a1d18baecd0580405cfe4 (diff) | |
download | memcached-3dc5964d9309bf8b4757c523a4491b61ca3ba8b8.tar.gz |
Ensure that we don't register a connection twice in libevent
-rw-r--r-- | daemon/memcached.c | 8 | ||||
-rw-r--r-- | daemon/memcached.h | 2 | ||||
-rw-r--r-- | daemon/thread.c | 4 |
3 files changed, 3 insertions, 11 deletions
diff --git a/daemon/memcached.c b/daemon/memcached.c index 05d9ef6..17ba1cd 100644 --- a/daemon/memcached.c +++ b/daemon/memcached.c @@ -4901,9 +4901,7 @@ static enum try_read_result try_read_network(conn *c) { } bool register_event(conn *c, struct timeval *timeout) { -#ifdef DEBUG assert(!c->registered_in_libevent); -#endif if (event_add(&c->event, timeout) == -1) { settings.extensions.logger->log(EXTENSION_LOG_WARNING, @@ -4913,25 +4911,19 @@ bool register_event(conn *c, struct timeval *timeout) { return false; } -#ifdef DEBUG c->registered_in_libevent = true; -#endif return true; } bool unregister_event(conn *c) { -#ifdef DEBUG assert(c->registered_in_libevent); -#endif if (event_del(&c->event) == -1) { return false; } -#ifdef DEBUG c->registered_in_libevent = false; -#endif return true; } diff --git a/daemon/memcached.h b/daemon/memcached.h index efa6dc3..c8a0983 100644 --- a/daemon/memcached.h +++ b/daemon/memcached.h @@ -276,9 +276,7 @@ struct conn { sasl_conn_t *sasl_conn; STATE_FUNC state; enum bin_substates substate; -#ifdef DEBUG bool registered_in_libevent; -#endif struct event event; short ev_flags; short which; /** which events were just triggered */ diff --git a/daemon/thread.c b/daemon/thread.c index 99479a9..3c30520 100644 --- a/daemon/thread.c +++ b/daemon/thread.c @@ -519,7 +519,9 @@ static void libevent_tap_process(int fd, short which, void *arg) { "Processing tap pending_io for %d\n", c->sfd); UNLOCK_THREAD(me); - register_event(c, NULL); + if (!c->registered_in_libevent) { + register_event(c, NULL); + } /* * We don't want the thread to keep on serving all of the data * from the context of the notification pipe, so just let it |