summaryrefslogtreecommitdiff
path: root/src/src/ip.c
diff options
context:
space:
mode:
authorJeremy Harris <jgh146exb@wizmail.org>2021-11-17 17:19:54 +0000
committerJeremy Harris <jgh146exb@wizmail.org>2021-11-17 17:20:17 +0000
commitdd19ce4f24eec64177cdcfcf294b8efbb631a24b (patch)
tree1d51fa8d15c396377b0939faa45001702e67bfe7 /src/src/ip.c
parent085111b72e3e3524485194b7dd501a9093a1b92f (diff)
select() -> poll(). Bug 2831
Diffstat (limited to 'src/src/ip.c')
-rw-r--r--src/src/ip.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/src/src/ip.c b/src/src/ip.c
index d83d6f910..aa42343fb 100644
--- a/src/src/ip.c
+++ b/src/src/ip.c
@@ -589,9 +589,7 @@ Returns: TRUE => ready for i/o
BOOL
fd_ready(int fd, time_t timelimit)
{
-fd_set select_inset;
-int time_left = timelimit - time(NULL);
-int rc;
+int rc, time_left = timelimit - time(NULL);
if (time_left <= 0)
{
@@ -602,12 +600,8 @@ if (time_left <= 0)
do
{
- struct timeval tv = { .tv_sec = time_left, .tv_usec = 0 };
- FD_ZERO (&select_inset);
- FD_SET (fd, &select_inset);
-
/*DEBUG(D_transport) debug_printf("waiting for data on fd\n");*/
- rc = select(fd + 1, (SELECT_ARG2_TYPE *)&select_inset, NULL, NULL, &tv);
+ rc = poll_one_fd(fd, POLLIN, time_left * 1000);
/* If some interrupt arrived, just retry. We presume this to be rare,
but it can happen (e.g. the SIGUSR1 signal sent by exiwhat causes
@@ -636,7 +630,7 @@ do
/* Checking the FD_ISSET is not enough, if we're interrupted, the
select_inset may still contain the 'input'. */
}
-while (rc < 0 || !FD_ISSET(fd, &select_inset));
+while (rc < 0);
return TRUE;
}