]> git.sur5r.net Git - openldap/commitdiff
ITS#4108 fix another accept/read race condition
authorHoward Chu <hyc@openldap.org>
Sat, 29 Oct 2005 15:16:35 +0000 (15:16 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 29 Oct 2005 15:16:35 +0000 (15:16 +0000)
servers/slapd/connection.c
servers/slapd/daemon.c

index e8773c0fe274fecd69470964d1c576b97c4e1e45..385186f882f8885537926318e972e79ff845e83b 100644 (file)
@@ -751,6 +751,7 @@ long connection_init(
        slap_sasl_open( c, 0 );
        slap_sasl_external( c, ssf, authid );
 
+       slapd_add_internal( s, 1 );
        ldap_pvt_thread_mutex_unlock( &c->c_mutex );
        ldap_pvt_thread_mutex_unlock( MCA_GET_CONN_MUTEX(s) );
 
@@ -1393,13 +1394,13 @@ void connection_client_stop(
        c->c_close_reason = "?";                        /* should never be needed */
        slapd_sd_lock();
        ber_sockbuf_free( c->c_sb );
+       slapd_remove( s, 0, 1, 1 );
        c->c_sb = ber_sockbuf_alloc( );
        {
                ber_len_t max = sockbuf_max_incoming;
                ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_SET_MAX_INCOMING, &max );
        }
 
-       slapd_remove( s, 0, 1, 1 );
        connection_return( c );
 }
 
@@ -1447,7 +1448,7 @@ int connection_read_activate( ber_socket_t s )
 
        if( rc != 0 ) {
                Debug( LDAP_DEBUG_ANY,
-                       "connection_read_activiate(%d): submit failed (%d)\n",
+                       "connection_read_activate(%d): submit failed (%d)\n",
                        s, rc, 0 );
        }
 
index 408d9aaeb3a6bb84c22f7065396a15a7f8a6ab9a..4adc2345ed268cd401b72100deab9c5a7d3a5e8c 100644 (file)
@@ -1516,7 +1516,6 @@ slap_listener(
                id, (long) s, peername, sl->sl_name.bv_val,
                0 );
 
-       slapd_add( s, 1, NULL );
        return 0;
 }