aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/openssl/compat/poll_win.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/apps/openssl/compat/poll_win.c b/apps/openssl/compat/poll_win.c
index 0d15522..8e28349 100644
--- a/apps/openssl/compat/poll_win.c
+++ b/apps/openssl/compat/poll_win.c
@@ -264,6 +264,14 @@ poll(struct pollfd *pfds, nfds_t nfds, int timeout_ms)
264 264
265 do { 265 do {
266 TIMEVAL tv; 266 TIMEVAL tv;
267
268 /*
269 * Cap the wait at the time remaining so the final pass
270 * does not overshoot the requested timeout.
271 */
272 if (timeout_ms != -1 && timeout_ms - timespent_ms < looptime_ms)
273 looptime_ms = timeout_ms - timespent_ms;
274
267 tv.tv_sec = 0; 275 tv.tv_sec = 0;
268 tv.tv_usec = looptime_ms * 1000; 276 tv.tv_usec = looptime_ms * 1000;
269 int handle_signaled = 0; 277 int handle_signaled = 0;