From 738723866ed6858cb694b0a770300d781e09e333 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 6 Sep 2017 21:46:09 +0100 Subject: [PATCH] ITS#8717 call connection delete callbacks When TLS fails to start --- libraries/libldap/open.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/libraries/libldap/open.c b/libraries/libldap/open.c index 11564f9c27..cd81d9c536 100644 --- a/libraries/libldap/open.c +++ b/libraries/libldap/open.c @@ -450,6 +450,31 @@ ldap_int_open_connection( --conn->lconn_refcnt; if (rc != LDAP_SUCCESS) { + /* process connection callbacks */ + { + struct ldapoptions *lo; + ldaplist *ll; + ldap_conncb *cb; + + lo = &ld->ld_options; + LDAP_MUTEX_LOCK( &lo->ldo_mutex ); + if ( lo->ldo_conn_cbs ) { + for ( ll=lo->ldo_conn_cbs; ll; ll=ll->ll_next ) { + cb = ll->ll_data; + cb->lc_del( ld, conn->lconn_sb, cb ); + } + } + LDAP_MUTEX_UNLOCK( &lo->ldo_mutex ); + lo = LDAP_INT_GLOBAL_OPT(); + LDAP_MUTEX_LOCK( &lo->ldo_mutex ); + if ( lo->ldo_conn_cbs ) { + for ( ll=lo->ldo_conn_cbs; ll; ll=ll->ll_next ) { + cb = ll->ll_data; + cb->lc_del( ld, conn->lconn_sb, cb ); + } + } + LDAP_MUTEX_UNLOCK( &lo->ldo_mutex ); + } return -1; } } -- 2.39.2