From: Pierangelo Masarati Date: Sat, 13 Oct 2007 10:26:04 +0000 (+0000) Subject: import fix to ITS#5185 X-Git-Tag: OPENLDAP_REL_ENG_2_3_39~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d558590b898f2a1c97060b606212ccc700eb1537;p=thirdparty%2Fopenldap.git import fix to ITS#5185 --- diff --git a/CHANGES b/CHANGES index e508614f62..964de1d558 100644 --- a/CHANGES +++ b/CHANGES @@ -11,6 +11,7 @@ OpenLDAP 2.3.39 Engineering Fixed slapd-ldap SASL idassert w/o authcId Fixed slapd-ldif directory separators in DN (ITS#5172) Fixed slapd-meta conn caching on bind failure (ITS#5154) + Fixed slapd-meta bind timeout assertion (ITS#5185) Fixed slapd-sql concurrency issue (ITS#5095) Fixed slapo-chain double-free (ITS#5137) Fixed slapo-pcache and -rwm interaction fix (ITS#4991) diff --git a/servers/slapd/back-meta/conn.c b/servers/slapd/back-meta/conn.c index 8a585948dc..f01f30037d 100644 --- a/servers/slapd/back-meta/conn.c +++ b/servers/slapd/back-meta/conn.c @@ -1183,7 +1183,8 @@ retry_lock:; case LDAP_REQ_BIND: /* if bound as rootdn, the backend must bind to all targets - * with the administrative identity */ + * with the administrative identity + * (unless pseoudoroot-bind-defer is TRUE) */ if ( op->orb_method == LDAP_AUTH_SIMPLE && be_isroot_pw( op ) ) { op_type = META_OP_REQUIRE_ALL; } @@ -1241,6 +1242,9 @@ retry_lock:; rs, mc, i, LDAP_BACK_CONN_ISPRIV( &mc_curr ), LDAP_BACK_DONTSEND, !new_conn ); if ( candidates[ i ].sr_err == LDAP_SUCCESS ) { + if ( new_conn && ( sendok & LDAP_BACK_BINDING ) ) { + LDAP_BACK_CONN_BINDING_SET( &mc->mc_conns[ i ] ); + } META_CANDIDATE_SET( &candidates[ i ] ); ncandidates++; @@ -1430,6 +1434,10 @@ retry_lock2:; return NULL; } + if ( new_conn && ( sendok & LDAP_BACK_BINDING ) ) { + LDAP_BACK_CONN_BINDING_SET( &mc->mc_conns[ i ] ); + } + candidates[ i ].sr_err = LDAP_SUCCESS; META_CANDIDATE_SET( &candidates[ i ] ); ncandidates++;