]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Fix a failure calcuating URL reputation. 3121/head
authorPhil Ross <phil.ross@gmail.com>
Fri, 25 Oct 2019 17:47:43 +0000 (18:47 +0100)
committerPhil Ross <phil.ross@gmail.com>
Fri, 25 Oct 2019 17:47:43 +0000 (18:47 +0100)
`url_reputation_filter` was attempting to lookup the token key returned
in the `get_token` callback in an integer-indexed table of requests.
Change to looking up the request by its index.

Commit 73d2cee changed from using `gen_url_queries` to
`lua_util.extract_specific_urls` in the assignment of `requests`.
The latter just returns a list of URLs. The former returns the TLD along
with the number of hits. The URL score calculation uses the number of
hits. Revert to using `gen_url_queries`.

src/plugins/lua/reputation.lua

index 6b43c7fb47d908d595a100e39cf99f5a842148b4..8b2b8c5a4aab6c76ed4e84a49a5cd0f8c837bdcb 100644 (file)
@@ -284,15 +284,15 @@ local function gen_url_queries(task, rule)
 end
 
 local function url_reputation_filter(task, rule)
-  local requests = lua_util.extract_specific_urls(task, rule.selector.config.max_urls)
+  local requests = gen_url_queries(task, rule)
   local results = {}
   local nchecked = 0
 
-  local function tokens_cb(err, token, values)
+  local function indexed_tokens_cb(err, index, values)
     nchecked = nchecked + 1
 
     if values then
-      results[token] = values
+      results[index] = values
     end
 
     if nchecked == #requests then
@@ -319,8 +319,12 @@ local function url_reputation_filter(task, rule)
     end
   end
 
-  for _,u in ipairs(requests) do
-    rule.backend.get_token(task, rule, u:get_tld(), tokens_cb)
+  for i,req in ipairs(requests) do
+    local function tokens_cb(err, token, values)
+      indexed_tokens_cb(err, i, values)
+    end
+
+    rule.backend.get_token(task, rule, req[1], tokens_cb)
   end
 end