]> git.sur5r.net Git - openldap/commitdiff
Add test for resched state change in connection_get
authorKurt Zeilenga <kurt@openldap.org>
Thu, 17 Jun 1999 00:48:51 +0000 (00:48 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Thu, 17 Jun 1999 00:48:51 +0000 (00:48 +0000)
servers/slapd/connection.c

index 71b58ea3e09ca7a0129026e37554c1be64c446a7..1800cc1798ec2a266d56ac0019dfc12c4aae346c 100644 (file)
@@ -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 )