From: Kurt Zeilenga Date: Thu, 17 Jun 1999 00:48:51 +0000 (+0000) Subject: Add test for resched state change in connection_get X-Git-Tag: OPENLDAP_REL_ENG_2_BP~288 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=36cb0346113a67c32f0aca00100da6941f3d07d7;p=openldap Add test for resched state change in connection_get --- diff --git a/servers/slapd/connection.c b/servers/slapd/connection.c index 71b58ea3e0..1800cc1798 100644 --- a/servers/slapd/connection.c +++ b/servers/slapd/connection.c @@ -176,9 +176,9 @@ static Connection* connection_get( int s ) continue; } - assert( connections[i].c_struct_state == SLAP_C_USED ); - assert( connections[i].c_conn_state != SLAP_C_INVALID ); - assert( ber_pvt_sb_in_use( connections[i].c_sb ) ); + /* state can actually change from used -> unused by resched, + * so don't assert details here. + */ if( ber_pvt_sb_get_desc( connections[i].c_sb ) == s ) { c = &connections[i]; @@ -193,6 +193,7 @@ static Connection* connection_get( int s ) if( c->c_struct_state != SLAP_C_USED ) { /* connection must have been closed due to resched */ + assert( c->c_conn_state == SLAP_C_INVALID ); assert( !ber_pvt_sb_in_use( c->c_sb ) ); @@ -314,8 +315,7 @@ long connection_init( assert( c->c_pending_ops == NULL ); c->c_client_name = ch_strdup( name == NULL ? "" : name ); - if ( addr != NULL ) - c->c_client_addr = ch_strdup( addr ); + c->c_client_addr = ch_strdup( addr ); c->c_n_ops_received = 0; #ifdef LDAP_COUNTERS @@ -357,9 +357,6 @@ connection_destroy( Connection *c ) assert( c->c_conn_state != SLAP_C_INVALID ); assert( c->c_ops == NULL ); - c->c_struct_state = SLAP_C_UNUSED; - c->c_conn_state = SLAP_C_INVALID; - #ifdef LDAP_COMPAT30 c->c_version = 0; #endif @@ -396,6 +393,9 @@ connection_destroy( Connection *c ) } ber_pvt_sb_destroy( c->c_sb ); + + c->c_conn_state = SLAP_C_INVALID; + c->c_struct_state = SLAP_C_UNUSED; } int connection_state_closing( Connection *c )