If the main event queue is not empty, call select() with zero timeout, so
that the events are ran again after the FD's are checked. This allows us to schedule I/O checks between processing of user commands.
This commit is contained in:
parent
84a7d7f77c
commit
30770df2ab
1 changed files with 4 additions and 7 deletions
|
@ -894,7 +894,7 @@ io_loop(void)
|
||||||
fd_set rd, wr;
|
fd_set rd, wr;
|
||||||
struct timeval timo;
|
struct timeval timo;
|
||||||
time_t tout;
|
time_t tout;
|
||||||
int hi;
|
int hi, events;
|
||||||
sock *s;
|
sock *s;
|
||||||
node *n, *p;
|
node *n, *p;
|
||||||
|
|
||||||
|
@ -904,7 +904,7 @@ io_loop(void)
|
||||||
FD_ZERO(&wr);
|
FD_ZERO(&wr);
|
||||||
for(;;)
|
for(;;)
|
||||||
{
|
{
|
||||||
ev_run_list(&global_event_list);
|
events = ev_run_list(&global_event_list);
|
||||||
now = time(NULL);
|
now = time(NULL);
|
||||||
tout = tm_first_shot();
|
tout = tm_first_shot();
|
||||||
if (tout <= now)
|
if (tout <= now)
|
||||||
|
@ -912,11 +912,8 @@ io_loop(void)
|
||||||
tm_shot();
|
tm_shot();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
else
|
timo.tv_sec = events ? 0 : tout - now;
|
||||||
{
|
timo.tv_usec = 0;
|
||||||
timo.tv_sec = tout - now;
|
|
||||||
timo.tv_usec = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
hi = 0;
|
hi = 0;
|
||||||
WALK_LIST(n, sock_list)
|
WALK_LIST(n, sock_list)
|
||||||
|
|
Loading…
Reference in a new issue