From: Howard Chu Date: Wed, 15 Feb 2006 07:38:17 +0000 (+0000) Subject: Fix ITS#4401 teardown persistent clients when unconfiguring X-Git-Tag: OPENLDAP_REL_ENG_2_4_BP~188 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=937bc5bbb7f1871c8db348d46d3c554b80484e4c;p=openldap Fix ITS#4401 teardown persistent clients when unconfiguring --- diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index 100daa327d..ac1042abd1 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -2600,6 +2600,16 @@ avl_ber_bvfree( void *v_bv ) void syncinfo_free( syncinfo_t *sie ) { + if ( sie->si_ld ) { + if ( sie->si_conn_setup ) { + ber_socket_t s; + ldap_get_option( sie->si_ld, LDAP_OPT_DESC, &s ); + connection_client_stop( s ); + sie->si_conn_setup = 0; + } + ldap_unbind_ext( sie->si_ld, NULL, NULL ); + } + /* re-fetch it, in case it was already removed */ sie->si_re = ldap_pvt_runqueue_find( &slapd_rq, do_syncrepl, sie ); if ( sie->si_re ) { @@ -2663,9 +2673,6 @@ syncinfo_free( syncinfo_t *sie ) if ( sie->si_presentlist ) { avl_free( sie->si_presentlist, avl_ber_bvfree ); } - if ( sie->si_ld ) { - ldap_unbind_ext( sie->si_ld, NULL, NULL ); - } while ( !LDAP_LIST_EMPTY( &sie->si_nonpresentlist )) { struct nonpresent_entry* npe; npe = LDAP_LIST_FIRST( &sie->si_nonpresentlist );