From: Vsevolod Stakhov Date: Fri, 6 Aug 2021 15:35:49 +0000 (+0100) Subject: [Minor] Add lua_util.shuffle X-Git-Tag: 3.0~39 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=5fe80e02c8e13ff5d556eb4801087166103ae4a1;p=rspamd.git [Minor] Add lua_util.shuffle --- diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua index 9dc017839..929488929 100644 --- a/lualib/lua_util.lua +++ b/lualib/lua_util.lua @@ -1461,4 +1461,19 @@ exports.maybe_smtp_quote_value = function(str) return str end +---[[[ +-- @function lua_util.shuffle(table) +-- Performs in-place shuffling of a table +-- @param {table} tbl table to shuffle +-- @return {table} same table +--]]] +exports.shuffle = function(tbl) + local size = #tbl + for i = size, 1, -1 do + local rand = math.random(size) + tbl[i], tbl[rand] = tbl[rand], tbl[i] + end + return tbl +end + return exports diff --git a/lualib/rspamadm/dmarc_report.lua b/lualib/rspamadm/dmarc_report.lua index 164029248..e3c59db79 100644 --- a/lualib/rspamadm/dmarc_report.lua +++ b/lualib/rspamadm/dmarc_report.lua @@ -121,15 +121,7 @@ local function redis_prefix(...) return table.concat({...}, dmarc_settings.reporting.redis_keys.join_char) end --- Helper to shuffle a Lua table -local function shuffle(tbl) - local size = #tbl - for i = size, 1, -1 do - local rand = math.random(size) - tbl[i], tbl[rand] = tbl[rand], tbl[i] - end - return tbl -end + local function get_rua(rep_key) local parts = lua_util.str_split(rep_key, dmarc_settings.reporting.redis_keys.join_char) @@ -605,7 +597,7 @@ local function process_report_date(opts, start_time, date) end -- Shuffle reports to make sending more fair - shuffle(reports) + lua_util.shuffle(reports) -- Remove processed key if not opts.no_opt then lua_redis.request(redis_params, redis_attrs, diff --git a/src/plugins/lua/mx_check.lua b/src/plugins/lua/mx_check.lua index e5ac13f4e..e131d16d4 100644 --- a/src/plugins/lua/mx_check.lua +++ b/src/plugins/lua/mx_check.lua @@ -156,6 +156,7 @@ local function mx_check(task) mxes[name].checked = true else -- Try to open TCP connection to port 25 + for _,res in ipairs(results) do local t_ret = rspamd_tcp.new({ task = task,