r20060: Fix the timout calculation.
authorJeremy Allison <jra@samba.org>
Thu, 7 Dec 2006 05:48:01 +0000 (05:48 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:16:23 +0000 (12:16 -0500)
Jeremy.
(This used to be commit 017be792f3c41aba2cbda10b53d80aad91c5d666)

source3/nsswitch/winbindd_cm.c

index b6a65664571f521276e361250f33799748cbe5a6..330ba4ca9becc0aade1b16602ddf41e93f886148 100644 (file)
@@ -72,16 +72,18 @@ static void set_dc_type_and_flags( struct winbindd_domain *domain );
  If we're still offline, exponentially increase the timeout check.
 ****************************************************************/
 
-static void calc_new_online_timeout(struct winbindd_domain *domain)
+static void calc_new_online_timeout_check(struct winbindd_domain *domain)
 {
+       int wbc = lp_winbind_cache_time();
+
        if (domain->startup) {
                domain->check_online_timeout = 10;
-       } else if (domain->check_online_timeout == 0) {
-               domain->check_online_timeout = lp_winbind_cache_time();
+       } else if (domain->check_online_timeout < wbc) {
+               domain->check_online_timeout = wbc;
        } else {
-               uint32 new_to = (domain->check_online_timeout * domain->check_online_timeout);
-               if (new_to < domain->check_online_timeout) {
-                       new_to = 0x7FFFFFFF;
+               uint32 new_to = domain->check_online_timeout * 3;
+               if (new_to > (3*60*60)) {
+                       new_to = 3*60*60; /* 3 hours. */
                }
                domain->check_online_timeout = new_to;
        }
@@ -171,7 +173,7 @@ void set_domain_offline(struct winbindd_domain *domain)
        /* If we're in statup mode, check again in 10 seconds, not in
           lp_winbind_cache_time() seconds (which is 5 mins by default). */
 
-       calc_new_online_timeout(domain);
+       calc_new_online_timeout_check(domain);
 
        domain->check_online_event = add_timed_event( NULL,
                                                timeval_current_ofs(domain->check_online_timeout,0),