0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-10-18 18:08:45 +00:00

IO: Avoid multiple event cycles in one loop cycle.

Event cycle may took too much time and trigger next timer events, so
avoid cycling between timer and event cycles inside the loop cycle.
This commit is contained in:
Ondrej Zajicek (work) 2016-04-06 11:57:28 +02:00 committed by Pavel Tvrdik
parent 4fa4e9400e
commit e8de85843d
2 changed files with 6 additions and 1 deletions

View File

@ -670,6 +670,10 @@ bgp_keepalive_timeout(timer *t)
DBG("BGP: Keepalive timer\n");
bgp_schedule_packet(conn, PKT_KEEPALIVE);
/* Kick TX a bit faster */
if (ev_active(conn->tx_ev))
ev_run(conn->tx_ev);
}
static void

View File

@ -2050,12 +2050,13 @@ io_loop(void)
for(;;)
{
events = ev_run_list(&global_event_list);
timers:
update_times();
tout = tm_first_shot();
if (tout <= now)
{
tm_shot();
continue;
goto timers;
}
poll_tout = (events ? 0 : MIN(tout - now, 3)) * 1000; /* Time in milliseconds */