]> git.sur5r.net Git - openldap/commitdiff
ITS#6361
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 17 Nov 2009 18:08:40 +0000 (18:08 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 17 Nov 2009 18:08:40 +0000 (18:08 +0000)
CHANGES
servers/slapd/connection.c
servers/slapd/daemon.c

diff --git a/CHANGES b/CHANGES
index c4e403b5095db9d55b61860616a9fb7ee3623d98..25f15f52bcd99320954457607602f8c22952a162 100644 (file)
--- 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)
index e1f651bd2b8aea769d8c98d741ff906fd16e596c..43faf736a511b65f30d575dcbf813fbade6c81ed 100644 (file)
@@ -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 */
index 8027f2a78847d7289e4fc57201d01d3f96520e48..1acc659712ffeab3cd14bbd5087bc785cadfb0a7 100644 (file)
@@ -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