]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/bind.c
Drop unnecessary memset()s
[openldap] / servers / slapd / back-meta / bind.c
index e648dee09825b093bc570d53a2d32b7265728eee..0f450bef669f91bfcba697769825ada9b2aae134 100644 (file)
@@ -220,7 +220,7 @@ retry_lock:;
 
                        assert( mc->mc_refcnt == 1 );
 #if META_BACK_PRINT_CONNTREE > 0
-                       meta_back_print_conntree( mi->mi_conninfo.lai_tree, ">>> meta_back_bind" );
+                       meta_back_print_conntree( mi, ">>> meta_back_bind" );
 #endif /* META_BACK_PRINT_CONNTREE */
                        tmpmc = avl_delete( &mi->mi_conninfo.lai_tree, (caddr_t)mc,
                                meta_back_conndn_cmp );
@@ -252,12 +252,12 @@ retry_lock:;
                        ber_bvreplace( &mc->mc_local_ndn, &op->o_req_ndn );
                        if ( isroot ) {
                                LDAP_BACK_CONN_ISPRIV_SET( mc );
-                               mc->mc_conn = LDAP_BACK_PCONN_SET( op );
+                               LDAP_BACK_PCONN_SET( mc, op );
                        }
                        lerr = avl_insert( &mi->mi_conninfo.lai_tree, (caddr_t)mc,
                                meta_back_conndn_cmp, meta_back_conndn_dup );
 #if META_BACK_PRINT_CONNTREE > 0
-                       meta_back_print_conntree( mi->mi_conninfo.lai_tree, "<<< meta_back_bind" );
+                       meta_back_print_conntree( mi, "<<< meta_back_bind" );
 #endif /* META_BACK_PRINT_CONNTREE */
                        ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
                        if ( lerr == -1 ) {
@@ -399,9 +399,7 @@ retry:;
                                op->o_log_prefix, candidate, (void *)msc->msc_ld );
 #endif /* DEBUG_205 */
 
-                       ldap_unbind_ext( msc->msc_ld, NULL, NULL );
-                       msc->msc_ld = NULL;
-                       LDAP_BACK_CONN_BINDING_CLEAR( msc );
+                       meta_clear_one_candidate( op, mc, candidate );
                        ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
 
                        rs->sr_err = timeout_err;
@@ -683,7 +681,8 @@ retry_binding:;
                        ++bound;
                        continue;
 
-               } else if ( LDAP_BACK_CONN_BINDING( msc ) ) {
+               } else if ( META_BACK_CONN_CREATING( msc ) || LDAP_BACK_CONN_BINDING( msc ) )
+               {
                        ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
                        ldap_pvt_thread_yield();
                        goto retry_binding;
@@ -710,7 +709,7 @@ retry_binding:;
 
 
                        if ( rc == LDAP_UNAVAILABLE ) {
-                               /* FIXME: meta_back_retry() already calls
+                               /* FIXME: meta_back_retry() already re-calls
                                 * meta_back_single_dobind() */
                                if ( meta_back_retry( op, rs, &mc, i, sendok ) ) {
                                        goto retry_ok;
@@ -720,6 +719,7 @@ retry_binding:;
                                        ldap_pvt_thread_mutex_lock( &mi->mi_conninfo.lai_mutex );
                                        LDAP_BACK_CONN_BINDING_CLEAR( msc );
                                        ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
+                                       meta_back_release_conn( op, mc );
                                }
 
                                return 0;