mirror of
https://github.com/samba-team/samba.git
synced 2025-02-04 17:47:26 +03:00
r15084: Try and squeeze more out of the non-read/write code path.
Jeremy.
This commit is contained in:
parent
1c99aed563
commit
23dcff4d50
@ -103,16 +103,12 @@ void run_events(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct timeval *get_timed_events_timeout(struct timeval *to_ret, time_t default_to)
|
struct timeval *get_timed_events_timeout(struct timeval *to_ret)
|
||||||
{
|
{
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
|
|
||||||
if (timed_events == NULL) {
|
if (timed_events == NULL) {
|
||||||
if (default_to == (time_t)-1) {
|
return NULL;
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
*to_ret = timeval_set(default_to, 0);
|
|
||||||
return to_ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
now = timeval_current();
|
now = timeval_current();
|
||||||
|
@ -684,9 +684,10 @@ static BOOL fork_domain_child(struct winbindd_child *child)
|
|||||||
|
|
||||||
GetTimeOfDay(&now);
|
GetTimeOfDay(&now);
|
||||||
|
|
||||||
tp = get_timed_events_timeout(&t, (time_t)-1);
|
tp = get_timed_events_timeout(&t);
|
||||||
if (tp) {
|
if (tp) {
|
||||||
DEBUG(11,("select will use timeout of %d seconds\n", (int)tp->tv_sec));
|
DEBUG(11,("select will use timeout of %u.%u seconds\n",
|
||||||
|
(unsigned int)tp->tv_sec, (unsigned int)tp->tv_usec ));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle messages */
|
/* Handle messages */
|
||||||
|
@ -357,7 +357,7 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
|
|||||||
{
|
{
|
||||||
fd_set fds;
|
fd_set fds;
|
||||||
int selrtn;
|
int selrtn;
|
||||||
struct timeval to = timeval_set(SMBD_SELECT_TIMEOUT, 0);
|
struct timeval to;
|
||||||
int maxfd = 0;
|
int maxfd = 0;
|
||||||
|
|
||||||
smb_read_error = 0;
|
smb_read_error = 0;
|
||||||
@ -367,6 +367,9 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
|
|||||||
if (timeout >= 0) {
|
if (timeout >= 0) {
|
||||||
to.tv_sec = timeout / 1000;
|
to.tv_sec = timeout / 1000;
|
||||||
to.tv_usec = (timeout % 1000) * 1000;
|
to.tv_usec = (timeout % 1000) * 1000;
|
||||||
|
} else {
|
||||||
|
to.tv_sec = SMBD_SELECT_TIMEOUT;
|
||||||
|
to.tv_usec = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -441,14 +444,20 @@ static BOOL receive_message_or_smb(char *buffer, int buffer_len, int timeout)
|
|||||||
goto again;
|
goto again;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Are there any timed events waiting ? If so, ensure we don't
|
||||||
|
* select for longer than it would take to wait for them.
|
||||||
|
*/
|
||||||
|
|
||||||
{
|
{
|
||||||
struct timeval tmp;
|
struct timeval tmp;
|
||||||
struct timeval *tp = get_timed_events_timeout(&tmp,SMBD_SELECT_TIMEOUT);
|
struct timeval *tp = get_timed_events_timeout(&tmp);
|
||||||
|
|
||||||
if (tp) {
|
if (tp) {
|
||||||
to = timeval_min(&to, tp);
|
to = timeval_min(&to, tp);
|
||||||
if (timeval_is_zero(&to)) {
|
if (timeval_is_zero(&to)) {
|
||||||
return True;
|
/* Process a timed event now... */
|
||||||
|
run_events();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user