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