From: Willy Tarreau Date: Mon, 14 May 2007 01:16:06 +0000 (+0200) Subject: [MINOR] allow null timeouts for past events in select X-Git-Tag: v1.3.11.1~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d9b744104eadd33f5611b2779a82447cf7bc1b3a;p=thirdparty%2Fhaproxy.git [MINOR] allow null timeouts for past events in select --- diff --git a/src/ev_select.c b/src/ev_select.c index fb5cc41eab..1b897de2e4 100644 --- a/src/ev_select.c +++ b/src/ev_select.c @@ -90,12 +90,14 @@ REGPRM2 static void _do_poll(struct poller *p, struct timeval *exp) /* allow select to return immediately when needed */ delta.tv_sec = delta.tv_usec = 0; if (tv_isset(exp)) { - tv_remain(&now, exp, &delta); - /* To avoid eventual select loops due to timer precision */ - delta.tv_usec += SCHEDULER_RESOLUTION * 1000; - if (delta.tv_usec >= 1000000) { - delta.tv_usec -= 1000000; - delta.tv_sec ++; + if (tv_islt(&now, exp)) { + tv_remain(&now, exp, &delta); + /* To avoid eventual select loops due to timer precision */ + delta.tv_usec += SCHEDULER_RESOLUTION * 1000; + if (delta.tv_usec >= 1000000) { + delta.tv_usec -= 1000000; + delta.tv_sec ++; + } } }