From ecc28ff57c6faf1fc15d5ba8429697fbd80b6961 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Fri, 26 Jan 2007 00:40:05 +0000 Subject: [PATCH] fix cached connection taint in case of timeout --- servers/slapd/back-ldap/bind.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/servers/slapd/back-ldap/bind.c b/servers/slapd/back-ldap/bind.c index 9f146158da..e500353076 100644 --- a/servers/slapd/back-ldap/bind.c +++ b/servers/slapd/back-ldap/bind.c @@ -1619,8 +1619,23 @@ retry:; if ( sendok & LDAP_BACK_BINDING ) { ldap_unbind_ext( lc->lc_ld, NULL, NULL ); lc->lc_ld = NULL; + + /* let it be used, but taint/delete it so that + * no-one else can look it up any further */ + ldap_pvt_thread_mutex_lock( &li->li_conninfo.lai_mutex ); + +#if LDAP_BACK_PRINT_CONNTREE > 0 + ldap_back_print_conntree( li, ">>> ldap_back_getconn(timeout)" ); +#endif /* LDAP_BACK_PRINT_CONNTREE */ + + (void)ldap_back_conn_delete( li, lc ); LDAP_BACK_CONN_TAINTED_SET( lc ); +#if LDAP_BACK_PRINT_CONNTREE > 0 + ldap_back_print_conntree( li, "<<< ldap_back_getconn(timeout)" ); +#endif /* LDAP_BACK_PRINT_CONNTREE */ + ldap_pvt_thread_mutex_unlock( &li->li_conninfo.lai_mutex ); + } else { (void)ldap_back_cancel( lc, op, rs, msgid, sendok ); } -- 2.39.5