[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
RE: (ITS#8717) Connection delete callback registreed with LDAP_OPT_CONNECT_CB is not called on TLS failure
- To: openldap-its@OpenLDAP.org
- Subject: RE: (ITS#8717) Connection delete callback registreed with LDAP_OPT_CONNECT_CB is not called on TLS failure
- From: ipuleston@SonicWALL.com
- Date: Fri, 25 Aug 2017 21:30:46 +0000
- Auto-submitted: auto-generated (OpenLDAP-ITS)
I have uploaded the patch to ftp.openldap.org/incoming as ian-puleston-1708=
25.patch, and included it below.
The code that it adds is pretty much copied from ldap_free_connection:
diff --git libraries/libldap/open.c libraries/libldap/open.c
index 11564f9..251289d 100644
--- libraries/libldap/open.c
+++ libraries/libldap/open.c
@@ -450,6 +450,31 @@ ldap_int_open_connection(
--conn->lconn_refcnt;
=20
if (rc !=3D LDAP_SUCCESS) {
+ /* report the failure to the connection callbacks *=
/
+ {
+ struct ldapoptions *lo;
+ ldaplist *ll;
+ ldap_conncb *cb;
+
+ lo =3D &ld->ld_options;
+ LDAP_MUTEX_LOCK( &lo->ldo_mutex );
+ if ( lo->ldo_conn_cbs ) {
+ for ( ll=3Dlo->ldo_conn_cbs; ll; ll=
=3Dll->ll_next ) {
+ cb =3D ll->ll_data;
+ cb->lc_del( ld, conn->lconn=
_sb, cb );
+ }
+ }
+ LDAP_MUTEX_UNLOCK( &lo->ldo_mutex );
+ lo =3D LDAP_INT_GLOBAL_OPT();
+ LDAP_MUTEX_LOCK( &lo->ldo_mutex );
+ if ( lo->ldo_conn_cbs ) {
+ for ( ll=3Dlo->ldo_conn_cbs; ll; ll=
=3Dll->ll_next ) {
+ cb =3D ll->ll_data;
+ cb->lc_del( ld, conn->lconn=
_sb, cb );
+ }
+ }
+ LDAP_MUTEX_UNLOCK( &lo->ldo_mutex );
+ }
return -1;
}
}