]> git.sur5r.net Git - openldap/commitdiff
import fix to ITS#5185
authorPierangelo Masarati <ando@openldap.org>
Sat, 13 Oct 2007 10:26:04 +0000 (10:26 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 13 Oct 2007 10:26:04 +0000 (10:26 +0000)
CHANGES
servers/slapd/back-meta/conn.c

diff --git a/CHANGES b/CHANGES
index e508614f620f2aab0a43a81e457b8e934f2ada96..964de1d5589de3bd67d226decb49e3f9d9daffee 100644 (file)
--- 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) 
index 8a585948dccce13f844f96dc773c97eec655b929..f01f30037d8514a3c5b6e8790e136e7a68503dfa 100644 (file)
@@ -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++;