--- servers/slapd/back-meta/init.c 2005/09/28 00:30:33 1.37.2.5 +++ servers/slapd/back-meta/init.c 2005/10/05 17:42:20 1.37.2.6 @@ -1,4 +1,4 @@ -/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/init.c,v 1.48 2005/09/10 16:59:36 ando Exp $ */ +/* $OpenLDAP: pkg/ldap/servers/slapd/back-meta/init.c,v 1.49 2005/10/01 16:07:00 ando Exp $ */ /* This work is part of OpenLDAP Software . * * Copyright 1999-2005 The OpenLDAP Foundation. @@ -126,13 +126,20 @@ meta_back_db_open( return 0; } -static void -conn_free( +void +meta_back_conn_free( void *v_mc ) { metaconn_t *mc = v_mc; int i, ntargets; + assert( mc != NULL ); + assert( mc->mc_refcnt == 0 ); + + if ( !BER_BVISNULL( &mc->mc_local_ndn ) ) { + free( mc->mc_local_ndn.bv_val ); + } + assert( mc->mc_conns != NULL ); /* at least one must be present... */ @@ -156,6 +163,7 @@ conn_free( } } + ldap_pvt_thread_mutex_destroy( &mc->mc_mutex ); free( mc ); } @@ -220,7 +228,7 @@ meta_back_db_destroy( ldap_pvt_thread_mutex_lock( &mi->mi_conn_mutex ); if ( mi->mi_conntree ) { - avl_free( mi->mi_conntree, conn_free ); + avl_free( mi->mi_conntree, meta_back_conn_free ); } /*