From: Martin Mares Date: Wed, 17 Nov 1999 12:04:24 +0000 (+0000) Subject: If the main event queue is not empty, call select() with zero timeout, so X-Git-Tag: v1.2.0~1450 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=30770df2ab33ffbfd75a9478265ac5e1a1db98d9;p=thirdparty%2Fbird.git 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. --- diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index aef348cea..5bc9b5ac9 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -894,7 +894,7 @@ io_loop(void) fd_set rd, wr; struct timeval timo; time_t tout; - int hi; + int hi, events; sock *s; node *n, *p; @@ -904,7 +904,7 @@ io_loop(void) FD_ZERO(&wr); for(;;) { - ev_run_list(&global_event_list); + events = ev_run_list(&global_event_list); now = time(NULL); tout = tm_first_shot(); if (tout <= now) @@ -912,11 +912,8 @@ io_loop(void) tm_shot(); continue; } - else - { - timo.tv_sec = tout - now; - timo.tv_usec = 0; - } + timo.tv_sec = events ? 0 : tout - now; + timo.tv_usec = 0; hi = 0; WALK_LIST(n, sock_list)