]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/unbind.c
Drop unnecessary memset()s
[openldap] / servers / slapd / back-meta / unbind.c
index c9aea2de998878179175ae1d968b7db9cca6c7f7..a71e533c9b279ff58f4ec93f3b960f89f5beab84 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1999-2005 The OpenLDAP Foundation.
+ * Copyright 1999-2006 The OpenLDAP Foundation.
  * Portions Copyright 2001-2003 Pierangelo Masarati.
  * Portions Copyright 1999-2003 Howard Chu.
  * All rights reserved.
@@ -49,28 +49,31 @@ meta_back_conn_destroy(
                BER_BVISNULL( &conn->c_ndn ) ? "" : conn->c_ndn.bv_val, 0 );
        
        mc_curr.mc_conn = conn;
-       mc_curr.mc_local_ndn = conn->c_ndn;
        
        ldap_pvt_thread_mutex_lock( &mi->mi_conninfo.lai_mutex );
-       mc = avl_delete( &mi->mi_conninfo.lai_tree, ( caddr_t )&mc_curr,
-                       meta_back_conn_cmp );
-       ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
-
-       if ( mc ) {
+#if META_BACK_PRINT_CONNTREE > 0
+       meta_back_print_conntree( mi, ">>> meta_back_conn_destroy" );
+#endif /* META_BACK_PRINT_CONNTREE */
+       while ( ( mc = avl_delete( &mi->mi_conninfo.lai_tree, ( caddr_t )&mc_curr, meta_back_conn_cmp ) ) != NULL )
+       {
                Debug( LDAP_DEBUG_TRACE,
                        "=>meta_back_conn_destroy: destroying conn %ld\n",
-                       LDAP_BACK_PCONN_ID( mc->mc_conn ), 0, 0 );
+                       LDAP_BACK_PCONN_ID( mc ), 0, 0 );
                
                assert( mc->mc_refcnt == 0 );
 
                meta_back_conn_free( mc );
        }
+#if META_BACK_PRINT_CONNTREE > 0
+       meta_back_print_conntree( mi, "<<< meta_back_conn_destroy" );
+#endif /* META_BACK_PRINT_CONNTREE */
+       ldap_pvt_thread_mutex_unlock( &mi->mi_conninfo.lai_mutex );
 
        /*
         * Cleanup rewrite session
         */
        for ( i = 0; i < mi->mi_ntargets; ++i ) {
-               rewrite_session_delete( mi->mi_targets[ i ].mt_rwmap.rwm_rw, conn );
+               rewrite_session_delete( mi->mi_targets[ i ]->mt_rwmap.rwm_rw, conn );
        }
 
        return 0;