blob: e2606e515d96589b17e6e61f75aeaea57e92c8ee (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
--- src/lib/ioloop.c.orig 2024-08-31 16:00:42.168389000 +0200
+++ src/lib/ioloop.c 2024-08-31 16:04:14.978513000 +0200
@@ -18,6 +18,7 @@
Dovecot generally doesn't have very important short timeouts, so to avoid
logging many warnings about this, use a rather high value. */
#define IOLOOP_TIME_MOVED_FORWARDS_MIN_USECS (100000)
+#define IOLOOP_TIME_MOVED_FORWARDS_MIN_USECS_LARGE (1000000)
time_t ioloop_time = 0;
struct timeval ioloop_timeval;
@@ -654,9 +655,13 @@
/* the callback may have slept, so check the time again. */
i_gettimeofday(&ioloop_timeval);
} else {
+ int max_diff = diff_usecs < IOLOOP_TIME_MOVED_FORWARDS_MIN_USECS_LARGE ?
+ IOLOOP_TIME_MOVED_FORWARDS_MIN_USECS :
+ IOLOOP_TIME_MOVED_FORWARDS_MIN_USECS_LARGE;
+
diff_usecs = timeval_diff_usecs(&ioloop->next_max_time,
&ioloop_timeval);
- if (unlikely(-diff_usecs >= IOLOOP_TIME_MOVED_FORWARDS_MIN_USECS)) {
+ if (unlikely(-diff_usecs >= max_diff)) {
io_loops_timeouts_update(-diff_usecs);
/* time moved forwards */
ioloop->time_moved_callback(&ioloop->next_max_time,
|