summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorAndrew Lewis <nerf@judo.za.org>2017-09-28 16:36:01 +0200
committerAndrew Lewis <nerf@judo.za.org>2017-10-18 00:26:15 +0200
commit6b0a0a31e1193ed2692e7452c4be2956286c64fe (patch)
treef96bdcd091c8c3f866dfa208d5b1312274393abd /src/plugins
parent0906f42dfd4c2293967a40a96be44cea39cc31e0 (diff)
downloadrspamd-6b0a0a31e1193ed2692e7452c4be2956286c64fe.tar.gz
rspamd-6b0a0a31e1193ed2692e7452c4be2956286c64fe.zip
[Fix] Milter headers: X-Spamd-Result header if X-Virus ran first
- Fixes: #1851 - Reported by: @iflyhigh - MFH: rspamd-1.6
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/lua/milter_headers.lua32
1 files changed, 18 insertions, 14 deletions
diff --git a/src/plugins/lua/milter_headers.lua b/src/plugins/lua/milter_headers.lua
index d193e29aa..a60eeb7ed 100644
--- a/src/plugins/lua/milter_headers.lua
+++ b/src/plugins/lua/milter_headers.lua
@@ -165,7 +165,11 @@ local function milter_headers(task)
if skip_wanted('x-spamd-result') then return end
if not common.symbols then
common.symbols = task:get_symbols_all()
+ end
+ if not common['metric_score'] then
common['metric_score'] = task:get_metric_score('default')
+ end
+ if not common['metric_action'] then
common['metric_action'] = task:get_metric_action('default')
end
if settings.routines['x-spamd-result'].remove then
@@ -288,26 +292,26 @@ local function milter_headers(task)
routines['x-virus'] = function()
if skip_wanted('x-virus') then return end
- if not common.symbols then
- common.symbols = {}
+ if not common.symbols_hash then
+ if not common.symbols then
+ common.symbols = task:get_symbols_all()
+ end
+ local h = {}
+ for _, s in ipairs(common.symbols) do
+ h[s.name] = s
+ end
+ common.symbols_hash = h
end
if settings.routines['x-virus'].remove then
remove[settings.routines['x-virus'].header] = settings.routines['x-virus'].remove
end
local virii = {}
for _, sym in ipairs(settings.routines['x-virus'].symbols) do
- if not (common.symbols[sym] == false) then
- local s = task:get_symbol(sym)
- if not s then
- common.symbols[sym] = false
- else
- common.symbols[sym] = s
- if (((s or E)[1] or E).options or E)[1] then
- table.insert(virii, s[1].options[1])
- else
- table.insert(virii, 'unknown')
- end
- end
+ local s = common.symbols_hash[sym]
+ if ((s or E).options or E)[1] then
+ table.insert(virii, table.concat(s.options, ','))
+ elseif s then
+ table.insert(virii, 'unknown')
end
end
if #virii > 0 then