From 0b31c94a8bd11bde21562c5eb1c1a2e372c38546 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount <quanah@openldap.org> Date: Tue, 17 Nov 2009 18:08:40 +0000 Subject: [PATCH] ITS#6361 --- CHANGES | 1 + servers/slapd/connection.c | 8 ++++++-- servers/slapd/daemon.c | 12 ++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index c4e403b509..25f15f52bc 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,7 @@ OpenLDAP 2.4.20 Engineering Fixed libldap uninitialized return value (ITS#6355) Fixed liblutil constant (ITS#5909) Added slapd handling of hex server IDs (ITS#6297) + Fixed slapd asserts in minimal environment (ITS#6361) Fixed slapd configArgs initialization (ITS#6363) Fixed slapd debug handling of LDAP_DEBUG_ANY (ITS#6324) Fixed slapd inclusion of ac/unistd.h (ITS#6342) diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index e1f651bd2b..43faf736a5 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -783,7 +783,9 @@ void connection_closing( Connection *c, const char *why ) { assert( connections != NULL ); assert( c != NULL ); - assert( c->c_struct_state == SLAP_C_USED ); + + if ( c->c_struct_state != SLAP_C_USED ) return; + assert( c->c_conn_state != SLAP_C_INVALID ); /* c_mutex must be locked by caller */ @@ -816,7 +818,9 @@ connection_close( Connection *c ) { assert( connections != NULL ); assert( c != NULL ); - assert( c->c_struct_state == SLAP_C_USED ); + + if ( c->c_struct_state != SLAP_C_USED ) return; + assert( c->c_conn_state == SLAP_C_CLOSING ); /* NOTE: c_mutex should be locked by caller */ diff --git a/servers/slapd/daemon.c b/servers/slapd/daemon.c index 8027f2a788..1acc659712 100644 --- a/servers/slapd/daemon.c +++ b/servers/slapd/daemon.c @@ -989,13 +989,17 @@ slapd_clr_read( ber_socket_t s, int wake ) void slapd_set_read( ber_socket_t s, int wake ) { + int do_wake = 1; ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex ); - assert( SLAP_SOCK_IS_ACTIVE( s )); - if (!SLAP_SOCK_IS_READ( s )) SLAP_SOCK_SET_READ( s ); - + if( SLAP_SOCK_IS_ACTIVE( s ) && !SLAP_SOCK_IS_READ( s )) { + SLAP_SOCK_SET_READ( s ); + } else { + do_wake = 0; + } ldap_pvt_thread_mutex_unlock( &slap_daemon.sd_mutex ); - WAKE_LISTENER(wake); + if ( do_wake ) + WAKE_LISTENER(wake); } time_t -- GitLab