]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] allow null timeouts for past events in select
authorWilly Tarreau <w@1wt.eu>
Mon, 14 May 2007 01:16:06 +0000 (03:16 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 14 May 2007 01:16:06 +0000 (03:16 +0200)
src/ev_select.c

index fb5cc41eab739e2fc21c59395a584bbd5a525c5d..1b897de2e4deb5a5687633b77c9253762cb77f18 100644 (file)
@@ -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 ++;
+                       }
                }
        }