]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Fix selectors usage in multimap
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 23 Sep 2018 14:21:49 +0000 (15:21 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 23 Sep 2018 14:21:49 +0000 (15:21 +0100)
src/plugins/lua/multimap.lua

index d358382c2649fb239cd6109888de1f60bf62657f..6a4e0f2c4cd5abf9fa9d5874d745b45f0d3b3e99 100644 (file)
@@ -848,12 +848,18 @@ local function multimap_callback(task, rule)
       end
     end,
     selector = function()
-      local elts = lua_selectors.process_selectors(task, rule.selector) or {}
-      for _,elt in ipairs(elts) do
-        match_rule(rule, elt)
+      local elts = rule.selector(task)
+
+      if type(elts) == 'table' then
+        for _,elt in ipairs(elts) do
+          match_rule(rule, elt)
+        end
+      else
+        match_rule(rule, elts)
       end
     end,
   }
+
   process_rule_funcs.ip = process_rule_funcs.dnsbl
   local f = process_rule_funcs[rt]
   if f then
@@ -939,7 +945,8 @@ local function add_multimap_rule(key, newrule)
       rspamd_logger.errx(rspamd_config, 'selector map requires selector definition')
       return nil
     else
-      local selector = lua_selectors.parse_selector(rspamd_config, newrule['selector'])
+      local selector = lua_selectors.create_selector_closure(
+          rspamd_config, newrule['selector'], newrule['delimiter'] or "")
 
       if not selector then
         rspamd_logger.errx(rspamd_config, 'selector map has invalid selector: "%s", symbol: %s',