easy: added 'poll_fds' function to reduce size of 'wait_or_timeout'

This commit is contained in:
Gabriel Marin 2025-08-18 19:18:31 +03:00
parent be01b60ce5
commit 13b68da93e

View file

@ -567,6 +567,40 @@ static unsigned int populate_fds(struct pollfd *fds, struct events *ev)
return numfds;
}
/* poll_fds()
*
* poll the fds[] array
*/
static int poll_fds(struct events *ev,
struct pollfd *fds,
const unsigned int numfds)
{
int pollrc;
if(numfds) {
/* wait for activity or timeout */
#if DEBUG_EV_POLL
fprintf(stderr, "poll(numfds=%u, timeout=%ldms)\n", numfds, ev->ms);
#endif
pollrc = Curl_poll(fds, numfds, ev->ms);
#if DEBUG_EV_POLL
fprintf(stderr, "poll(numfds=%u, timeout=%ldms) -> %d\n",
numfds, ev->ms, pollrc);
#endif
if(pollrc < 0)
return CURLE_UNRECOVERABLE_POLL;
}
else {
#if DEBUG_EV_POLL
fprintf(stderr, "poll, but no fds, wait timeout=%ldms\n", ev->ms);
#endif
pollrc = 0;
if(ev->ms > 0)
curlx_wait_ms(ev->ms);
}
return pollrc;
}
/* wait_or_timeout()
*
* waits for activity on any of the given sockets, or the timeout to trigger.
@ -587,27 +621,7 @@ static CURLcode wait_or_timeout(struct Curl_multi *multi, struct events *ev)
/* get the time stamp to use to figure out how long poll takes */
before = curlx_now();
if(numfds) {
/* wait for activity or timeout */
#if DEBUG_EV_POLL
fprintf(stderr, "poll(numfds=%u, timeout=%ldms)\n", numfds, ev->ms);
#endif
pollrc = Curl_poll(fds, numfds, ev->ms);
#if DEBUG_EV_POLL
fprintf(stderr, "poll(numfds=%u, timeout=%ldms) -> %d\n",
numfds, ev->ms, pollrc);
#endif
if(pollrc < 0)
return CURLE_UNRECOVERABLE_POLL;
}
else {
#if DEBUG_EV_POLL
fprintf(stderr, "poll, but no fds, wait timeout=%ldms\n", ev->ms);
#endif
pollrc = 0;
if(ev->ms > 0)
curlx_wait_ms(ev->ms);
}
pollrc = poll_fds(ev, fds, numfds);
ev->msbump = FALSE; /* reset here */