commit 57e500a: [Minor] Register some more timeouts

Vsevolod Stakhov vsevolod at rspamd.com
Sat Sep 10 13:14:04 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-09-10 13:26:32 +0100
URL: https://github.com/rspamd/rspamd/commit/57e500a029fe4e8e3ba6575450998618a2f60d13

[Minor] Register some more timeouts

---
 lualib/lua_util.lua            | 11 +++++++++++
 src/plugins/lua/arc.lua        |  1 +
 src/plugins/lua/asn.lua        |  1 +
 src/plugins/lua/clickhouse.lua |  1 +
 src/plugins/lua/dmarc.lua      |  3 ++-
 src/plugins/lua/hfilter.lua    |  5 +++++
 6 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua
index bd7c2dd29..454629bba 100644
--- a/lualib/lua_util.lua
+++ b/lualib/lua_util.lua
@@ -1521,4 +1521,15 @@ end
 --]]]
 exports.http_upstreams_by_url = http_upstreams_by_url
 
+---[[[
+-- @function lua_util.dns_timeout_augmentation(cfg)
+-- Returns an augmentation suitable to define DNS timeout for a module
+-- @return {string} a string in format 'timeout=x' where `x` is a number of seconds for DNS timeout
+--]]]
+local function dns_timeout_augmentation(cfg)
+  return string.format('timeout=%f', cfg:get_dns_timeout() or 0.0)
+end
+
+exports.dns_timeout_augmentation = dns_timeout_augmentation
+
 return exports
diff --git a/src/plugins/lua/arc.lua b/src/plugins/lua/arc.lua
index b2baa4a11..871d64b43 100644
--- a/src/plugins/lua/arc.lua
+++ b/src/plugins/lua/arc.lua
@@ -802,6 +802,7 @@ if settings.whitelisted_signers_map then
     score = -2.0,
     group = 'policies',
     groups = {'arc'},
+    augmentations = {lua_util.dns_timeout_augmentation(rspamd_config)},
   })
 end
 
diff --git a/src/plugins/lua/asn.lua b/src/plugins/lua/asn.lua
index aa281d781..7f2bfea6b 100644
--- a/src/plugins/lua/asn.lua
+++ b/src/plugins/lua/asn.lua
@@ -145,6 +145,7 @@ if configure_asn_module() then
     callback = asn_check,
     priority = 8,
     flags = 'empty,nostat',
+    augmentations = {lua_util.dns_timeout_augmentation(rspamd_config)},
   })
   if options['symbol'] then
     rspamd_config:register_symbol({
diff --git a/src/plugins/lua/clickhouse.lua b/src/plugins/lua/clickhouse.lua
index 8a40bb800..b8f418abd 100644
--- a/src/plugins/lua/clickhouse.lua
+++ b/src/plugins/lua/clickhouse.lua
@@ -1469,6 +1469,7 @@ if opts then
       callback = clickhouse_collect,
       priority = 10,
       flags = 'empty,explicit_disable,ignore_passthrough',
+      augmentations = {string.format("timeout=%f", settings.timeout)},
     })
     rspamd_config:register_finish_script(function(task)
       if nrows > 0 then
diff --git a/src/plugins/lua/dmarc.lua b/src/plugins/lua/dmarc.lua
index 2d00bad10..99d909154 100644
--- a/src/plugins/lua/dmarc.lua
+++ b/src/plugins/lua/dmarc.lua
@@ -657,7 +657,8 @@ if settings.munging then
     score = 0,
     group = 'policies',
     groups = {'dmarc'},
-    callback = dmarc_common.gen_munging_callback(munging_opts, settings)
+    callback = dmarc_common.gen_munging_callback(munging_opts, settings),
+    augmentations = {lua_util.dns_timeout_augmentation(rspamd_config)},
   })
 
   rspamd_config:register_dependency('DMARC_MUNGED', 'DMARC_CHECK')
diff --git a/src/plugins/lua/hfilter.lua b/src/plugins/lua/hfilter.lua
index 18205e37e..f68d5b579 100644
--- a/src/plugins/lua/hfilter.lua
+++ b/src/plugins/lua/hfilter.lua
@@ -551,6 +551,7 @@ local auth_and_local_conf = lua_util.config_check_local_or_authed(rspamd_config,
     false, false)
 check_local = auth_and_local_conf[1]
 check_authed = auth_and_local_conf[2]
+local timeout = 0.0
 
 local opts = rspamd_config:get_all_opt('hfilter')
 if opts then
@@ -568,15 +569,18 @@ if config['helo_enabled'] then
   checks_hellohost_map = add_static_map(checks_hellohost)
   checks_hello_map = add_static_map(checks_hello)
   append_t(symbols_enabled, symbols_helo)
+  timeout = math.max(timeout, rspamd_config:get_dns_timeout() * 3)
 end
 if config['hostname_enabled'] then
   if not checks_hellohost_map then
     checks_hellohost_map = add_static_map(checks_hellohost)
   end
   append_t(symbols_enabled, symbols_hostname)
+  timeout = math.max(timeout, rspamd_config:get_dns_timeout())
 end
 if config['from_enabled'] then
   append_t(symbols_enabled, symbols_from)
+  timeout = math.max(timeout, rspamd_config:get_dns_timeout())
 end
 if config['rcpt_enabled'] then
   append_t(symbols_enabled, symbols_rcpt)
@@ -594,6 +598,7 @@ if #symbols_enabled > 0 then
     name = 'HFILTER_CHECK',
     callback = hfilter_callback,
     type = 'callback',
+    augmentations = {string.format("timeout=%f", timeout)},
   }
   for _,sym in ipairs(symbols_enabled) do
     rspamd_config:register_symbol{


More information about the Commits mailing list