diff --git a/nsock/src/engine_epoll.c b/nsock/src/engine_epoll.c index 5cec6be51..70acf555d 100644 --- a/nsock/src/engine_epoll.c +++ b/nsock/src/engine_epoll.c @@ -264,8 +264,10 @@ int epoll_loop(struct npool *nsp, int msec_timeout) { nse = next_expirable_event(nsp); if (!nse) event_msecs = -1; /* None of the events specified a timeout */ - else - event_msecs = MAX(0, TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod)); + else { + event_msecs = TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod); + event_msecs = MAX(0, event_msecs); + } #if HAVE_PCAP #ifndef PCAP_CAN_DO_SELECT diff --git a/nsock/src/engine_iocp.c b/nsock/src/engine_iocp.c index d77d81ef9..baabc6768 100644 --- a/nsock/src/engine_iocp.c +++ b/nsock/src/engine_iocp.c @@ -300,8 +300,10 @@ int iocp_loop(struct npool *nsp, int msec_timeout) { nse = next_expirable_event(nsp); if (!nse) event_msecs = -1; /* None of the events specified a timeout */ - else - event_msecs = MAX(0, TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod)); + else { + event_msecs = TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod); + event_msecs = MAX(0, event_msecs); + } #if HAVE_PCAP #ifndef PCAP_CAN_DO_SELECT diff --git a/nsock/src/engine_kqueue.c b/nsock/src/engine_kqueue.c index 8e5303c9a..92e261573 100644 --- a/nsock/src/engine_kqueue.c +++ b/nsock/src/engine_kqueue.c @@ -242,8 +242,10 @@ int kqueue_loop(struct npool *nsp, int msec_timeout) { nse = next_expirable_event(nsp); if (!nse) event_msecs = -1; /* None of the events specified a timeout */ - else - event_msecs = MAX(0, TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod)); + else { + event_msecs = TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod); + event_msecs = MAX(0, event_msecs); + } #if HAVE_PCAP #ifndef PCAP_CAN_DO_SELECT diff --git a/nsock/src/engine_poll.c b/nsock/src/engine_poll.c index 88aed456e..372d99d90 100644 --- a/nsock/src/engine_poll.c +++ b/nsock/src/engine_poll.c @@ -314,8 +314,10 @@ int poll_loop(struct npool *nsp, int msec_timeout) { nse = next_expirable_event(nsp); if (!nse) event_msecs = -1; /* None of the events specified a timeout */ - else - event_msecs = MAX(0, TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod)); + else { + event_msecs = TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod); + event_msecs = MAX(0, event_msecs); + } #if HAVE_PCAP #ifndef PCAP_CAN_DO_SELECT diff --git a/nsock/src/engine_select.c b/nsock/src/engine_select.c index 73e20721c..2b888bb19 100644 --- a/nsock/src/engine_select.c +++ b/nsock/src/engine_select.c @@ -261,8 +261,11 @@ int select_loop(struct npool *nsp, int msec_timeout) { nse = next_expirable_event(nsp); if (!nse) event_msecs = -1; /* None of the events specified a timeout */ - else - event_msecs = MAX(0, TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod)); + else { + event_msecs = TIMEVAL_MSEC_SUBTRACT(nse->timeout, nsock_tod); + event_msecs = MAX(0, event_msecs); + } + #if HAVE_PCAP #ifndef PCAP_CAN_DO_SELECT diff --git a/nsock/src/nsock_core.c b/nsock/src/nsock_core.c index 9778009e5..6c93669cf 100644 --- a/nsock/src/nsock_core.c +++ b/nsock/src/nsock_core.c @@ -927,7 +927,8 @@ enum nsock_loopstatus nsock_loop(nsock_pool nsp, int msec_timeout) { } if (msec_timeout >= 0) { - msecs_left = MAX(0, TIMEVAL_MSEC_SUBTRACT(loop_timeout, nsock_tod)); + msecs_left = TIMEVAL_MSEC_SUBTRACT(loop_timeout, nsock_tod); + msecs_left = MAX(0, msecs_left); if (msecs_left == 0 && loopnum > 0) { quitstatus = NSOCK_LOOP_TIMEOUT; break;