]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-meta/init.c
fix ITS#4071
[openldap] / servers / slapd / back-meta / init.c
index fb2b0d50ceb888241511c95a434b30397b052c47..3f71a429f25882e9ca123a5474241d74e4404e5e 100644 (file)
@@ -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 );
                }
 
                /*