diff --git a/proto/rpki/transport.c b/proto/rpki/transport.c index d3d8414b..51885314 100644 --- a/proto/rpki/transport.c +++ b/proto/rpki/transport.c @@ -76,6 +76,7 @@ rpki_tr_open(struct rpki_tr_sock *tr) /* sk->type -1 is invalid value, a correct value MUST be set in the specific transport layer in open_fp() hook */ sk->type = -1; + sk->fast_rx = 1; /* We need to load the ROAs DAMN FAST */ sk->tx_hook = rpki_connected_hook; sk->err_hook = rpki_err_hook; sk->data = cache; diff --git a/sysdep/unix/io-loop.c b/sysdep/unix/io-loop.c index b69adc7e..6d66708c 100644 --- a/sysdep/unix/io-loop.c +++ b/sysdep/unix/io-loop.c @@ -547,7 +547,7 @@ sockets_fire(struct birdloop *loop, _Bool read, _Bool write) /* Read until task limit is up */ if (read && (rev & POLLIN)) - while ((s == loop->sock_active) && s->rx_hook && sk_read(s, rev) && task_still_in_limit()) + while ((s == loop->sock_active) && s->rx_hook && sk_read(s, rev) && (s->fast_rx || task_still_in_limit())) ; if (s != loop->sock_active)