]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/unbind.c
better fix: in case of error during bind, just bail out (very conservative, though)
[openldap] / servers / slapd / back-meta / unbind.c
index e3d8a60421e3ea368d94fb9d974f812788e6e694..ed4bc96e30e82339f83857ef7ce7e01f22632b0c 100644 (file)
@@ -49,17 +49,7 @@ meta_back_conn_destroy(
        
        mc_curr.mc_conn = conn;
        
-retry_lock:;
-       switch ( ldap_pvt_thread_mutex_trylock( &mi->mi_conn_mutex ) ) {
-       case LDAP_PVT_THREAD_EBUSY:
-       default:
-               ldap_pvt_thread_yield();
-               goto retry_lock;
-
-       case 0:
-               break;
-       }
-
+       ldap_pvt_thread_mutex_lock( &mi->mi_conn_mutex );
        mc = avl_delete( &mi->mi_conntree, ( caddr_t )&mc_curr,
                        meta_back_conn_cmp );
        ldap_pvt_thread_mutex_unlock( &mi->mi_conn_mutex );
@@ -67,13 +57,10 @@ retry_lock:;
        if ( mc ) {
                Debug( LDAP_DEBUG_TRACE,
                        "=>meta_back_conn_destroy: destroying conn %ld\n",
-                       mc->mc_conn->c_connid, 0, 0 );
+                       LDAP_BACK_PCONN_ID( mc->mc_conn ), 0, 0 );
                
                assert( mc->mc_refcnt == 0 );
 
-               /*
-                * Cleanup rewrite session
-                */
                for ( i = 0; i < mi->mi_ntargets; ++i ) {
                        if ( mc->mc_conns[ i ].msc_ld != NULL ) {
                                meta_clear_one_candidate( &mc->mc_conns[ i ] );