mirror of
https://github.com/samba-team/samba.git
synced 2025-08-03 04:22:09 +03:00
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
This commit is contained in:
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
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);
|
||||
|
||||
|
@ -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,
|
||||
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)) {
|
||||
|
@ -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) {
|
||||
|
Reference in New Issue
Block a user