diff options
author | Jeremy Allison <jra@samba.org> | 2010-12-22 14:52:50 -0800 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-12-23 01:08:11 +0100 |
commit | 30d29e64cb5e0f1360ff47dd6d074d25fa86e5fd (patch) | |
tree | 3c3d56a56b041ea869c4e750b59641e9f3495059 | |
parent | 03b8b8e19952c40eb3eb22e16e7fbae4073b7b4b (diff) | |
download | samba-30d29e64cb5e0f1360ff47dd6d074d25fa86e5fd.tar.gz samba-30d29e64cb5e0f1360ff47dd6d074d25fa86e5fd.tar.xz samba-30d29e64cb5e0f1360ff47dd6d074d25fa86e5fd.zip |
All calls to event_add_to_select_args() call GetTimeOfDay() and
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
-rw-r--r-- | source3/include/event.h | 1 | ||||
-rw-r--r-- | source3/lib/events.c | 11 | ||||
-rw-r--r-- | source3/nmbd/nmbd_packets.c | 7 | ||||
-rw-r--r-- | source3/smbd/process.c | 9 | ||||
-rw-r--r-- | source3/winbindd/winbindd_dual.c | 5 |
5 files changed, 10 insertions, 23 deletions
diff --git a/source3/include/event.h b/source3/include/event.h index 6b41b1d81b..101a967c47 100644 --- a/source3/include/event.h +++ b/source3/include/event.h @@ -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, diff --git a/source3/lib/events.c b/source3/lib/events.c index 0e127f02dc..d987072884 100644 --- a/source3/lib/events.c +++ b/source3/lib/events.c @@ -27,10 +27,10 @@ */ 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; } diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c index 401eb25267..c6bb205f2d 100644 --- a/source3/nmbd/nmbd_packets.c +++ b/source3/nmbd/nmbd_packets.c @@ -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); diff --git a/source3/smbd/process.c b/source3/smbd/process.c index a1aed80982..150b2dd2cb 100644 --- a/source3/smbd/process.c +++ b/source3/smbd/process.c @@ -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)) { diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index 0d28d9cdd8..344b7e4bd1 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -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) { |