From: Phil Ross Date: Fri, 25 Oct 2019 17:47:43 +0000 (+0100) Subject: [Fix] Fix a failure calcuating URL reputation. X-Git-Tag: 2.1~14^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F3121%2Fhead;p=rspamd.git [Fix] Fix a failure calcuating URL reputation. `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`. --- diff --git a/src/plugins/lua/reputation.lua b/src/plugins/lua/reputation.lua index 6b43c7fb4..8b2b8c5a4 100644 --- a/src/plugins/lua/reputation.lua +++ b/src/plugins/lua/reputation.lua @@ -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