]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
ioloop: 0 ms timeouts could still have caused infinite looping.
authorTimo Sirainen <tss@iki.fi>
Sun, 30 Nov 2008 13:04:29 +0000 (15:04 +0200)
committerTimo Sirainen <tss@iki.fi>
Sun, 30 Nov 2008 13:04:29 +0000 (15:04 +0200)
--HG--
branch : HEAD

src/lib/ioloop.c

index a5b48ec823bc4c604dbeb08e45385a343ea1cac8..7c505c986bf147a7b206c9d1b042ec50eeb9f14b 100644 (file)
@@ -157,8 +157,9 @@ timeout_reset_timeval(struct timeout *timeout, struct timeval *tv_now)
        if (timeout->msecs == 0) {
                /* if we came here from io_loop_handle_timeouts(),
                   next_run must be larger than tv_now or we could go to
-                  infinite loop */
-               timeout->next_run.tv_usec += 1000;
+                  infinite loop. +1000 to get 1 ms further, another +1000 to
+                  account for timeout_update_next()'s truncation. */
+               timeout->next_run.tv_usec += 2000;
                if (timeout->next_run.tv_usec >= 1000000) {
                        timeout->next_run.tv_sec++;
                        timeout->next_run.tv_usec -= 1000000;