The branch, v3-6-test has been updated
       via  02a8a96 s3/winbind: use mono time for startup timeout check
       via  b7fcbb2 libreplace: clock_gettime sets errno
      from  dde50b4 Add check missing from previous patch after talloc_strdup().

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test


- Log -----------------------------------------------------------------
commit 02a8a96fd878542099644f84ad245a333124f97a
Author: Björn Jacke <[email protected]>
Date:   Fri Sep 10 21:36:20 2010 +0200

    s3/winbind: use mono time for startup timeout check

commit b7fcbb2955689b59822365593d2431f7f4bb5e34
Author: Björn Jacke <[email protected]>
Date:   Fri Sep 10 21:03:17 2010 +0200

    libreplace: clock_gettime sets errno

-----------------------------------------------------------------------

Summary of changes:
 lib/replace/replace.c            |    3 ++-
 source3/winbindd/winbindd.h      |    2 +-
 source3/winbindd/winbindd_cm.c   |    4 ++--
 source3/winbindd/winbindd_dual.c |    6 +++---
 4 files changed, 8 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/lib/replace/replace.c b/lib/replace/replace.c
index f3459dd..a00f705 100644
--- a/lib/replace/replace.c
+++ b/lib/replace/replace.c
@@ -776,7 +776,8 @@ int rep_clock_gettime(clockid_t clk_id, struct timespec *tp)
                        tp->tv_nsec = tval.tv_usec * 1000;
                        break;
                default:
-                       return EINVAL;
+                       errno = EINVAL;
+                       return -1;
        }
        return 0;
 }
diff --git a/source3/winbindd/winbindd.h b/source3/winbindd/winbindd.h
index 77aab85..68dabfe 100644
--- a/source3/winbindd/winbindd.h
+++ b/source3/winbindd/winbindd.h
@@ -155,7 +155,7 @@ struct winbindd_domain {
        bool primary;                          /* is this our primary domain ? 
*/
        bool internal;                         /* BUILTIN and member SAM */
        bool online;                           /* is this domain available ? */
-       time_t startup_time;                   /* When we set "startup" true. */
+       time_t startup_time;                   /* When we set "startup" true. 
monotonic clock */
        bool startup;                          /* are we in the first 30 
seconds after startup_time ? */
 
        bool can_do_samlogon_ex; /* Due to the lack of finer control what type
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index fca0a91..8f95031 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -291,7 +291,7 @@ static void check_domain_online_handler(struct 
event_context *ctx,
 
        /* Are we still in "startup" mode ? */
 
-       if (domain->startup && (now.tv_sec > domain->startup_time + 30)) {
+       if (domain->startup && (time_mono(NULL) > domain->startup_time + 30)) {
                /* No longer in "startup" mode. */
                DEBUG(10,("check_domain_online_handler: domain %s no longer in 
'startup' mode.\n",
                        domain->name ));
@@ -508,7 +508,7 @@ void set_domain_online_request(struct winbindd_domain 
*domain)
        GetTimeOfDay(&tev);
 
        /* Go into "startup" mode again. */
-       domain->startup_time = tev.tv_sec;
+       domain->startup_time = time_mono(NULL);
        domain->startup = True;
 
        tev.tv_sec += 5;
diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c
index f78ae2d..4cec7c2 100644
--- a/source3/winbindd/winbindd_dual.c
+++ b/source3/winbindd/winbindd_dual.c
@@ -1306,7 +1306,7 @@ static bool fork_domain_child(struct winbindd_child 
*child)
         * try to bring domain online after fork. */
        if ( child->domain ) {
                child->domain->startup = True;
-               child->domain->startup_time = time(NULL);
+               child->domain->startup_time = time_mono(NULL);
                /* we can be in primary domain or in trusted domain
                 * If we are in trusted domain, set the primary domain
                 * in start-up mode */
@@ -1314,7 +1314,7 @@ static bool fork_domain_child(struct winbindd_child 
*child)
                        set_domain_online_request(child->domain);
                        if (!(child->domain->primary)) {
                                primary_domain->startup = True;
-                               primary_domain->startup_time = time(NULL);
+                               primary_domain->startup_time = time_mono(NULL);
                                set_domain_online_request(primary_domain);
                        }
                }
@@ -1389,7 +1389,7 @@ static bool fork_domain_child(struct winbindd_child 
*child)
                GetTimeOfDay(&now);
 
                if (child->domain && child->domain->startup &&
-                               (now.tv_sec > child->domain->startup_time + 
30)) {
+                               (time_mono(NULL) > child->domain->startup_time 
+ 30)) {
                        /* No longer in "startup" mode. */
                        DEBUG(10,("fork_domain_child: domain %s no longer in 
'startup' mode.\n",
                                child->domain->name ));


-- 
Samba Shared Repository

Reply via email to