All calls to event_add_to_select_args() call GetTimeOfDay() and
authorJeremy Allison <jra@samba.org>
Wed, 22 Dec 2010 22:52:50 +0000 (14:52 -0800)
committerJeremy Allison <jra@samba.org>
Thu, 23 Dec 2010 00:08:11 +0000 (01:08 +0100)
pass this in as the &now parameter. Push this call inside of
event_add_to_select_args() to the correct point so it doesn't
get called unless needed.

Jeremy.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Thu Dec 23 01:08:11 CET 2010 on sn-devel-104

source3/include/event.h
source3/lib/events.c
source3/nmbd/nmbd_packets.c
source3/smbd/process.c
source3/winbindd/winbindd_dual.c

index 6b41b1d81bf7e6e3b6d294c0721e5c0b31ef81ba..101a967c47e191672c059c2d6e8b27234bab7376 100644 (file)
@@ -27,7 +27,6 @@
 /* The following definitions come from lib/events.c  */
 
 bool event_add_to_select_args(struct event_context *event_ctx,
-                             const struct timeval *now,
                              fd_set *read_fds, fd_set *write_fds,
                              struct timeval *timeout, int *maxfd);
 bool run_events(struct event_context *event_ctx,
index 0e127f02dc214c340a5907dea9119edba10395c9..d987072884d361aed67b150582c2ea29fbbaa60e 100644 (file)
  */
 
 bool event_add_to_select_args(struct tevent_context *ev,
-                             const struct timeval *now,
                              fd_set *read_fds, fd_set *write_fds,
                              struct timeval *timeout, int *maxfd)
 {
+       struct timeval now;
        struct tevent_fd *fde;
        struct timeval diff;
        bool ret = false;
@@ -60,7 +60,8 @@ bool event_add_to_select_args(struct tevent_context *ev,
                return ret;
        }
 
-       diff = timeval_until(now, &ev->timer_events->next_event);
+       now = timeval_current();
+       diff = timeval_until(&now, &ev->timer_events->next_event);
        *timeout = timeval_min(timeout, &diff);
 
        return true;
@@ -167,7 +168,7 @@ struct timeval *get_timed_events_timeout(struct tevent_context *ev,
 
 static int s3_event_loop_once(struct tevent_context *ev, const char *location)
 {
-       struct timeval now, to;
+       struct timeval to;
        fd_set r_fds, w_fds;
        int maxfd = 0;
        int ret = 0;
@@ -182,9 +183,7 @@ static int s3_event_loop_once(struct tevent_context *ev, const char *location)
                return 0;
        }
 
-       GetTimeOfDay(&now);
-
-       if (!event_add_to_select_args(ev, &now, &r_fds, &w_fds, &to, &maxfd)) {
+       if (!event_add_to_select_args(ev, &r_fds, &w_fds, &to, &maxfd)) {
                return -1;
        }
 
index 401eb2526724590e8674b9aef202d2017186dc91..c6bb205f2d10b0a8f4a06a1d0e123d57afe4b17e 100644 (file)
@@ -1881,11 +1881,8 @@ bool listen_for_packets(bool run_election)
        timeout.tv_sec = (run_election||num_response_packets) ? 1 : NMBD_SELECT_LOOP;
        timeout.tv_usec = 0;
 
-       {
-               struct timeval now = timeval_current();
-               event_add_to_select_args(nmbd_event_context(), &now,
-                                        &r_fds, &w_fds, &timeout, &maxfd);
-       }
+       event_add_to_select_args(nmbd_event_context(),
+                                &r_fds, &w_fds, &timeout, &maxfd);
 
        selrtn = sys_select(maxfd+1,&r_fds,&w_fds,NULL,&timeout);
 
index a1aed809829ea8e339132f7ae29d7dd893bef6ed..150b2dd2cb1fbeaac177a8fc698f574109163ad5 100644 (file)
@@ -979,13 +979,8 @@ static NTSTATUS smbd_server_connection_loop_once(struct smbd_server_connection *
         * select for longer than it would take to wait for them.
         */
 
-       {
-               struct timeval now;
-               GetTimeOfDay(&now);
-
-               event_add_to_select_args(smbd_event_context(), &now,
-                                        &r_fds, &w_fds, &to, &maxfd);
-       }
+       event_add_to_select_args(smbd_event_context(),
+                                &r_fds, &w_fds, &to, &maxfd);
 
        /* Process a signal and timed events now... */
        if (run_events(smbd_event_context(), &selrtn, NULL, NULL)) {
index 0d28d9cdd892fc4ea5a4ea7fd977b775f160508e..344b7e4bd1ac128b3af0fa90281ad030045cb0ea 100644 (file)
@@ -1384,7 +1384,6 @@ static bool fork_domain_child(struct winbindd_child *child)
                int maxfd;
                struct timeval t;
                struct timeval *tp;
-               struct timeval now;
                TALLOC_CTX *frame = talloc_stackframe();
                struct iovec iov[2];
                int iov_count;
@@ -1395,8 +1394,6 @@ static bool fork_domain_child(struct winbindd_child *child)
                        continue;
                }
 
-               GetTimeOfDay(&now);
-
                if (child->domain && child->domain->startup &&
                                (time_mono(NULL) > child->domain->startup_time + 30)) {
                        /* No longer in "startup" mode. */
@@ -1418,7 +1415,7 @@ static bool fork_domain_child(struct winbindd_child *child)
                t.tv_sec = 999999;
                t.tv_usec = 0;
 
-               event_add_to_select_args(winbind_event_context(), &now,
+               event_add_to_select_args(winbind_event_context(),
                                         &r_fds, &w_fds, &t, &maxfd);
                tp = get_timed_events_timeout(winbind_event_context(), &t);
                if (tp) {