mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-02-09 22:04:12 -05:00
allow modules to muck with connection tree and so
This commit is contained in:
parent
7701c82b68
commit
02af23c4c1
2 changed files with 24 additions and 13 deletions
|
|
@ -54,17 +54,20 @@ ldap_back_conn_destroy(
|
|||
while ( ( lc = avl_delete( &li->li_conninfo.lai_tree, (caddr_t)&lc_curr, ldap_back_conn_cmp ) ) != NULL )
|
||||
{
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"=>ldap_back_conn_destroy: destroying conn %ld (refcnt=%u)\n",
|
||||
LDAP_BACK_PCONN_ID( lc ), lc->lc_refcnt, 0 );
|
||||
"=>ldap_back_conn_destroy: destroying conn %ld "
|
||||
"refcnt=%d flags=0x%08x\n",
|
||||
LDAP_BACK_PCONN_ID( lc ),
|
||||
lc->lc_refcnt, lc->lc_lcflags );
|
||||
|
||||
assert( lc->lc_refcnt == 0 );
|
||||
if ( lc->lc_refcnt > 0 ) {
|
||||
/* someone else might be accessing the connection;
|
||||
* mark for deletion */
|
||||
LDAP_BACK_CONN_CACHED_CLEAR( lc );
|
||||
LDAP_BACK_CONN_TAINTED_SET( lc );
|
||||
|
||||
/*
|
||||
* Needs a test because the handler may be corrupted,
|
||||
* and calling ldap_unbind on a corrupted header results
|
||||
* in a segmentation fault
|
||||
*/
|
||||
ldap_back_conn_free( lc );
|
||||
} else {
|
||||
ldap_back_conn_free( lc );
|
||||
}
|
||||
}
|
||||
#if LDAP_BACK_PRINT_CONNTREE > 0
|
||||
ldap_back_print_conntree( li, "<<< ldap_back_conn_destroy" );
|
||||
|
|
|
|||
|
|
@ -57,12 +57,20 @@ meta_back_conn_destroy(
|
|||
while ( ( mc = avl_delete( &mi->mi_conninfo.lai_tree, ( caddr_t )&mc_curr, meta_back_conn_cmp ) ) != NULL )
|
||||
{
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"=>meta_back_conn_destroy: destroying conn %ld\n",
|
||||
LDAP_BACK_PCONN_ID( mc ), 0, 0 );
|
||||
"=>meta_back_conn_destroy: destroying conn %ld "
|
||||
"refcnt=%d flags=0x%08x\n",
|
||||
LDAP_BACK_PCONN_ID( mc ),
|
||||
mc->mc_refcnt, mc->msc_mscflags );
|
||||
|
||||
assert( mc->mc_refcnt == 0 );
|
||||
if ( mc->mc_refcnt > 0 ) {
|
||||
/* someone else might be accessing the connection;
|
||||
* mark for deletion */
|
||||
LDAP_BACK_CONN_CACHED_CLEAR( mc );
|
||||
LDAP_BACK_CONN_TAINTED_SET( mc );
|
||||
|
||||
meta_back_conn_free( mc );
|
||||
} else {
|
||||
meta_back_conn_free( mc );
|
||||
}
|
||||
}
|
||||
#if META_BACK_PRINT_CONNTREE > 0
|
||||
meta_back_print_conntree( mi, "<<< meta_back_conn_destroy" );
|
||||
|
|
|
|||
Loading…
Reference in a new issue