0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 01:31:55 +00:00

Unix: Substituted select -> poll also in congestion checker

It does strange things when even one fd larger than FD_SETSIZE is
passed to select().
This commit is contained in:
Jan Moskyto Matejka 2016-03-18 11:44:28 +01:00
parent fd926ed4ee
commit 9c92f69272

View File

@ -1679,19 +1679,12 @@ sk_maybe_write(sock *s)
int
sk_rx_ready(sock *s)
{
fd_set rd, wr;
struct timeval timo;
int rv;
FD_ZERO(&rd);
FD_ZERO(&wr);
FD_SET(s->fd, &rd);
timo.tv_sec = 0;
timo.tv_usec = 0;
struct pollfd pfd = { .fd = s->fd };
pfd.events |= POLLIN;
redo:
rv = select(s->fd+1, &rd, &wr, NULL, &timo);
rv = poll(&pfd, 1, 0);
if ((rv < 0) && (errno == EINTR || errno == EAGAIN))
goto redo;