]> git.sur5r.net Git - openldap/commitdiff
ITS#5592
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 2 Sep 2008 22:52:04 +0000 (22:52 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 2 Sep 2008 22:52:04 +0000 (22:52 +0000)
CHANGES
servers/slapd/back-meta/conn.c

diff --git a/CHANGES b/CHANGES
index ad6e1f5decc57fbd2e07db9ffac4e82682cf6333..d9e3f0a426d2f0ebe0fd1b50d80f34f8ea19d6c3 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 OpenLDAP 2.4 Change Log
 
 OpenLDAP 2.4.12 Engineering
+       Fixed slapd-meta quarantine behavior (ITS#5592)
        Fixed slapo-constraint string termination (ITS#5609)
        Fixed slapo-rwm callback cleanup (ITS#5601)
 
index fbc33720ed00ce326d32ad0a957a147b79a6590f..3b086cfc0484c6b84a551d0a7ad6a50d38b2833e 100644 (file)
@@ -289,11 +289,12 @@ meta_back_init_one_conn(
         * don't return the connection */
        if ( mt->mt_isquarantined ) {
                slap_retry_info_t       *ri = &mt->mt_quarantine;
-               int                     dont_retry = 1;
+               int                     dont_retry = 0;
 
                if ( mt->mt_quarantine.ri_interval ) {
                        ldap_pvt_thread_mutex_lock( &mt->mt_quarantine_mutex );
-                       if ( mt->mt_isquarantined == LDAP_BACK_FQ_YES ) {
+                       dont_retry = ( mt->mt_isquarantined > LDAP_BACK_FQ_NO );
+                       if ( dont_retry ) {
                                dont_retry = ( ri->ri_num[ ri->ri_idx ] == SLAP_RETRYNUM_TAIL
                                        || slap_get_time() < ri->ri_last + ri->ri_interval[ ri->ri_idx ] );
                                if ( !dont_retry ) {
@@ -307,9 +308,10 @@ meta_back_init_one_conn(
                                                Debug( LDAP_DEBUG_ANY, "%s %s.\n",
                                                        op->o_log_prefix, buf, 0 );
                                        }
+
+                                       mt->mt_isquarantined = LDAP_BACK_FQ_RETRYING;
                                }
 
-                               mt->mt_isquarantined = LDAP_BACK_FQ_RETRYING;
                        }
                        ldap_pvt_thread_mutex_unlock( &mt->mt_quarantine_mutex );
                }