]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Oops, forgot some code to be added
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 14 Jun 2025 13:54:56 +0000 (14:54 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sat, 14 Jun 2025 13:54:56 +0000 (14:54 +0100)
src/libserver/maps/map.c

index 2226a96d3c3204dcdea72f7f96bc8df4af60a9b5..e0e714d5ad8d9b6d83c24c31f0b2ecc3a6176676 100644 (file)
@@ -317,6 +317,7 @@ rspamd_http_map_process_next_check(struct rspamd_map *map,
                                                                   gboolean has_last_modified)
 {
        static const time_t interval_mult = 4; /* Reduced from 16 to be more responsive */
+       static const time_t min_respectful_interval = 5;
        time_t next_check;
        time_t effective_interval = map_check_interval;
 
@@ -374,6 +375,23 @@ rspamd_http_map_process_next_check(struct rspamd_map *map,
        return next_check;
 }
 
+/**
+ * Calculate respectful polling interval to avoid DoS'ing servers with cache validation
+ * @param map_check_interval user configured interval
+ * @return effective interval that respects server resources
+ */
+static inline time_t
+rspamd_map_get_respectful_interval(time_t map_check_interval)
+{
+       static const time_t min_respectful_interval = 5; /* Minimum 5 seconds to be respectful */
+       static const time_t interval_mult = 4;           /* Multiplier for respectful minimum */
+
+       if (map_check_interval < min_respectful_interval) {
+               return min_respectful_interval * interval_mult;
+       }
+       return map_check_interval;
+}
+
 static int
 http_map_finish(struct rspamd_http_connection *conn,
                                struct rspamd_http_message *msg)