mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
destroy bind connection after failed bind (ITS#4428)
This commit is contained in:
parent
00073c8cac
commit
fd5208c18f
@ -91,8 +91,6 @@ ldap_back_bind( Operation *op, SlapReply *rs )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert( lc->lc_binding == 1 );
|
|
||||||
lc->lc_binding = 0;
|
|
||||||
LDAP_BACK_CONN_ISBOUND_SET( lc );
|
LDAP_BACK_CONN_ISBOUND_SET( lc );
|
||||||
ber_dupbv( &lc->lc_bound_ndn, &op->o_req_ndn );
|
ber_dupbv( &lc->lc_bound_ndn, &op->o_req_ndn );
|
||||||
|
|
||||||
@ -107,11 +105,15 @@ ldap_back_bind( Operation *op, SlapReply *rs )
|
|||||||
}
|
}
|
||||||
done:;
|
done:;
|
||||||
|
|
||||||
|
assert( lc->lc_binding == 1 );
|
||||||
|
lc->lc_binding = 0;
|
||||||
|
|
||||||
/* must re-insert if local DN changed as result of bind */
|
/* must re-insert if local DN changed as result of bind */
|
||||||
if ( LDAP_BACK_CONN_ISBOUND( lc )
|
if ( !LDAP_BACK_CONN_ISBOUND( lc )
|
||||||
&& !dn_match( &op->o_req_ndn, &lc->lc_local_ndn ) )
|
|| ( LDAP_BACK_CONN_ISBOUND( lc )
|
||||||
|
&& !dn_match( &op->o_req_ndn, &lc->lc_local_ndn ) ) )
|
||||||
{
|
{
|
||||||
int lerr;
|
int lerr = 0;
|
||||||
|
|
||||||
/* wait for all other ops to release the connection */
|
/* wait for all other ops to release the connection */
|
||||||
retry_lock:;
|
retry_lock:;
|
||||||
@ -127,9 +129,12 @@ retry_lock:;
|
|||||||
ldap_back_conndn_cmp );
|
ldap_back_conndn_cmp );
|
||||||
assert( lc != NULL );
|
assert( lc != NULL );
|
||||||
|
|
||||||
ber_bvreplace( &lc->lc_local_ndn, &op->o_req_ndn );
|
if ( LDAP_BACK_CONN_ISBOUND( lc ) ) {
|
||||||
lerr = avl_insert( &li->li_conninfo.lai_tree, (caddr_t)lc,
|
ber_bvreplace( &lc->lc_local_ndn, &op->o_req_ndn );
|
||||||
ldap_back_conndn_cmp, ldap_back_conndn_dup );
|
lerr = avl_insert( &li->li_conninfo.lai_tree, (caddr_t)lc,
|
||||||
|
ldap_back_conndn_cmp, ldap_back_conndn_dup );
|
||||||
|
}
|
||||||
|
|
||||||
ldap_pvt_thread_mutex_unlock( &li->li_conninfo.lai_mutex );
|
ldap_pvt_thread_mutex_unlock( &li->li_conninfo.lai_mutex );
|
||||||
if ( lerr == -1 ) {
|
if ( lerr == -1 ) {
|
||||||
/* we can do this because lc_refcnt == 1 */
|
/* we can do this because lc_refcnt == 1 */
|
||||||
|
Loading…
Reference in New Issue
Block a user