diff --git a/servers/lloadd/client.c b/servers/lloadd/client.c index 51f7c78467..dd85b26a22 100644 --- a/servers/lloadd/client.c +++ b/servers/lloadd/client.c @@ -35,6 +35,11 @@ client_read_cb( evutil_socket_t s, short what, void *arg ) ber_len_t len; CONNECTION_LOCK(c); + if ( !c->c_live ) { + event_del( c->c_read_event ); + CONNECTION_UNLOCK(c); + return; + } Debug( LDAP_DEBUG_CONNS, "client_read_cb: " "connection %lu ready to read\n", @@ -61,6 +66,8 @@ client_read_cb( evutil_socket_t s, short what, void *arg ) c->c_currentber = NULL; ber_free( ber, 1 ); + + event_del( c->c_read_event ); CLIENT_DESTROY(c); return; } diff --git a/servers/lloadd/upstream.c b/servers/lloadd/upstream.c index 6a30e82c1e..54f157f60d 100644 --- a/servers/lloadd/upstream.c +++ b/servers/lloadd/upstream.c @@ -488,6 +488,11 @@ upstream_read_cb( evutil_socket_t s, short what, void *arg ) ber_len_t len; CONNECTION_LOCK(c); + if ( !c->c_live ) { + event_del( c->c_read_event ); + CONNECTION_UNLOCK(c); + return; + } Debug( LDAP_DEBUG_CONNS, "upstream_read_cb: " "connection %lu ready to read\n", c->c_connid ); @@ -513,6 +518,8 @@ upstream_read_cb( evutil_socket_t s, short what, void *arg ) c->c_currentber = NULL; ber_free( ber, 1 ); + + event_del( c->c_read_event ); UPSTREAM_DESTROY(c); return; }