summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--proto/bgp/bgp.c4
-rw-r--r--sysdep/unix/io.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index 7328cb79..94c8e5c2 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -668,6 +668,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
diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c
index 078fe73c..5955dbfe 100644
--- a/sysdep/unix/io.c
+++ b/sysdep/unix/io.c
@@ -2055,12 +2055,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 */