]> git.sur5r.net Git - openldap/commitdiff
ITS#6909 blind fix. re-init creds for retry.
authorHoward Chu <hyc@openldap.org>
Sun, 24 Apr 2011 04:11:52 +0000 (21:11 -0700)
committerHoward Chu <hyc@openldap.org>
Sun, 24 Apr 2011 04:11:52 +0000 (21:11 -0700)
Move retry so that cred validity is also re-checked.

servers/slapd/back-meta/search.c

index f0018d31b89725ec7c10a44e556c8f5c3abed66d..f4135fe2aba22549a91946805f7bbeebf612c3a3 100644 (file)
@@ -235,6 +235,10 @@ meta_search_dobind_init(
 
        assert( msc->msc_ld != NULL );
 
+       /* connect must be async only the first time... */
+       ldap_set_option( msc->msc_ld, LDAP_OPT_CONNECT_ASYNC, LDAP_OPT_ON );
+
+retry:;
        if ( !BER_BVISEMPTY( &binddn ) && BER_BVISEMPTY( &cred ) ) {
                /* bind anonymously? */
                Debug( LDAP_DEBUG_ANY, "%s meta_search_dobind_init[%d] mc=%p: "
@@ -250,10 +254,6 @@ meta_search_dobind_init(
                goto other;
        }
 
-       /* connect must be async only the first time... */
-       ldap_set_option( msc->msc_ld, LDAP_OPT_CONNECT_ASYNC, LDAP_OPT_ON );
-
-retry:;
        rc = ldap_sasl_bind( msc->msc_ld, binddn.bv_val, LDAP_SASL_SIMPLE, &cred,
                        NULL, NULL, &candidates[ candidate ].sr_msgid );
 
@@ -327,6 +327,8 @@ down:;
 
                        if ( rc == LDAP_SUCCESS ) {
                                candidates[ candidate ].sr_msgid = META_MSGID_IGNORE;
+                               binddn = msc->msc_bound_ndn;
+                               cred = msc->msc_cred;
                                goto retry;
                        }
                }