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

diff --git a/CHANGES b/CHANGES
index 91c82c93b816e6099a0cc1bb8ab1671616b7704e..62716d5265788eb07b3a0ee562e406fd50fa2305 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -18,6 +18,7 @@ OpenLDAP 2.4.6 Engineering
        Fixed slapd-ldif directory separators in DN (ITS#5172)
        Fixed slapd-meta leak when binding as rootdn (ITS#5155)
        Fixed slapd-meta conn caching on bind failure (ITS#5154)
+       Fixed slapd-meta bind timeout assertion (ITS#5185)
        Fixed slapd-monitor database registration (ITS#4965)
        Fixed slapo-chain double-free (ITS#5137)
        Fixed slapo-dynlist entry release (ITS#5135)
index ed7ff743cce025b8207055c7fa3954523a7edc22..37b041c0fba39d87b8f72dfe113f0241972375f8 100644 (file)
@@ -1181,7 +1181,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;
                }
@@ -1239,6 +1240,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++;
        
@@ -1428,6 +1432,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++;