commit 052323f: [Minor] Try to fix HTTP maps check timeouts
Vsevolod Stakhov
vsevolod at highsecure.ru
Fri Oct 25 11:21:07 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-10-25 12:15:16 +0100
URL: https://github.com/rspamd/rspamd/commit/052323f56f5dad1ccbb2e819983b532d0cd7db34 (HEAD -> master)
[Minor] Try to fix HTTP maps check timeouts
---
src/libutil/map.c | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/libutil/map.c b/src/libutil/map.c
index 7d8443d08..4c121f580 100644
--- a/src/libutil/map.c
+++ b/src/libutil/map.c
@@ -1007,31 +1007,35 @@ rspamd_map_schedule_periodic (struct rspamd_map *map,
if (map->next_check != 0) {
timeout = map->next_check - rspamd_get_calendar_ticks ();
- if (timeout < map->poll_timeout) {
- timeout = map->poll_timeout;
+ if (timeout > 0 && timeout < map->poll_timeout) {
+ /* Early check case, jitter */
+ gdouble poll_timeout = map->poll_timeout;
if (errored) {
- timeout = map->poll_timeout * error_mult;
+ poll_timeout = map->poll_timeout * error_mult;
}
else if (locked) {
- timeout = map->poll_timeout * lock_mult;
+ poll_timeout = map->poll_timeout * lock_mult;
}
- jittered_sec = rspamd_time_jitter (timeout, 0);
+ jittered_sec = MIN (timeout, poll_timeout);
+ }
+ else if (timeout <= 0) {
+ /* Data is already expired, need to check */
+ jittered_sec = 0.0;
}
else {
- jittered_sec = rspamd_time_jitter (timeout, map->poll_timeout);
+ /* No need to check now, wait till next_check */
+ jittered_sec = timeout;
}
-
- /* Reset till the next usage */
- map->next_check = 0;
}
else {
timeout = map->poll_timeout;
if (initial) {
timeout = 0.0;
- } else {
+ }
+ else {
if (errored) {
timeout = map->poll_timeout * error_mult;
}
More information about the Commits
mailing list