]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: ioloop: Never decrease wait time counters in ioloop_add_wait_time().
authorStephan Bosch <stephan.bosch@dovecot.fi>
Tue, 11 Dec 2018 19:52:44 +0000 (20:52 +0100)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 10 Sep 2019 07:01:46 +0000 (10:01 +0300)
Prevents problems when time moves backwards.

src/lib/ioloop.c

index ae67fb3d19465230f23a5b8f4791bdd32e72d4a7..78619ba0a73de9b7983576c193374fdd3ccf3ae8 100644 (file)
@@ -602,8 +602,14 @@ static void io_loops_timeouts_update(long diff_secs)
 static void ioloop_add_wait_time(struct ioloop *ioloop)
 {
        struct io_wait_timer *timer;
-       long long diff =
-               timeval_diff_usecs(&ioloop_timeval, &ioloop->wait_started);
+       long long diff;
+
+       diff = timeval_diff_usecs(&ioloop_timeval, &ioloop->wait_started);
+       if (diff < 0) {
+               /* time moved backwards */
+               diff = 0;
+       }
+
        ioloop->ioloop_wait_usecs += diff;
        ioloop_global_wait_usecs += diff;