aboutsummaryrefslogtreecommitdiffstats
path: root/lualib
diff options
context:
space:
mode:
authorCarsten Rosenberg <c.rosenberg@heinlein-support.de>2019-01-20 14:22:19 +0100
committerCarsten Rosenberg <c.rosenberg@heinlein-support.de>2019-01-20 14:22:19 +0100
commit6fd22b1aa8bbe08598709bcdcfbdc709daac6d2d (patch)
tree2c8679cbe4181ef742985ace01a5475157940908 /lualib
parent955142d02b401491e2797f98e18d3a347cfd3763 (diff)
downloadrspamd-6fd22b1aa8bbe08598709bcdcfbdc709daac6d2d.tar.gz
rspamd-6fd22b1aa8bbe08598709bcdcfbdc709daac6d2d.zip
[Minor] lua_scanners - icap container error handling
Diffstat (limited to 'lualib')
-rw-r--r--lualib/lua_scanners/icap.lua22
1 files changed, 14 insertions, 8 deletions
diff --git a/lualib/lua_scanners/icap.lua b/lualib/lua_scanners/icap.lua
index 6a16dea73..300243337 100644
--- a/lualib/lua_scanners/icap.lua
+++ b/lualib/lua_scanners/icap.lua
@@ -96,15 +96,21 @@ local function icap_check(task, content, digest, rule)
X-Virus-ID: Troj/DocDl-OYC
]] --
- local pattern_symbols
- local match
-
if icap_headers['X-Infection-Found'] ~= nil then
- pattern_symbols = "(Type%=%d; .* Threat%=)(.*)([;]+)"
- match = string.gsub(icap_headers['X-Infection-Found'], pattern_symbols, "%2")
- lua_util.debugm(rule.name, task,
- '%s: icap X-Infection-Found: %s', rule.log_prefix, match)
- table.insert(threat_string, match)
+ local _,_,icap_type,_,icap_threat =
+ icap_headers['X-Infection-Found']:find("Type=(.-); Resolution=(.-); Threat=(.-);$")
+
+ if not icap_type or icap_type == 2 then
+ -- error returned
+ lua_util.debugm(rule.name, task,
+ '%s: icap error X-Infection-Found: %s', rule.log_prefix, icap_threat)
+ common.yield_result(task, rule, icap_threat, 0, 'fail')
+ else
+ lua_util.debugm(rule.name, task,
+ '%s: icap X-Infection-Found: %s', rule.log_prefix, icap_threat)
+ table.insert(threat_string, icap_threat)
+ end
+
elseif icap_headers['X-Virus-ID'] ~= nil then
lua_util.debugm(rule.name, task,
'%s: icap X-Virus-ID: %s', rule.log_prefix, icap_headers['X-Virus-ID'])