From: Mikhail Galanin Date: Mon, 10 Sep 2018 14:17:14 +0000 (+0100) Subject: [Minor] Updated Lua to comply the new call semantic X-Git-Tag: 1.8.0~143^2~6 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1b5cef0e884b49430d5cac902a366703beef5439;p=rspamd.git [Minor] Updated Lua to comply the new call semantic --- diff --git a/lualib/lua_redis.lua b/lualib/lua_redis.lua index 33757b154..3c7bcd3b6 100644 --- a/lualib/lua_redis.lua +++ b/lualib/lua_redis.lua @@ -961,10 +961,16 @@ end exports.exec_redis_script = exec_redis_script -local function redis_connect_sync(redis_params, is_write, key, cfg) +local function redis_connect_sync(redis_params, is_write, key, cfg, ev_base) if not redis_params then return false,nil end + if not cfg then + cfg = rspamd_config + end + if not ev_base then + ev_base = rspamadm_ev_base + end local rspamd_redis = require "rspamd_redis" local addr @@ -990,8 +996,13 @@ local function redis_connect_sync(redis_params, is_write, key, cfg) local options = { host = addr:get_addr(), timeout = redis_params['timeout'], + config = cfg, + ev_base = ev_base } + for k,v in pairs(redis_params) do + options[k] = v + end local ret,conn = rspamd_redis.connect_sync(options) if not ret then diff --git a/lualib/lua_util.lua b/lualib/lua_util.lua index 0ce0c1874..b8e1dbfad 100644 --- a/lualib/lua_util.lua +++ b/lualib/lua_util.lua @@ -664,6 +664,30 @@ exports.extract_specific_urls = function(params_or_task, lim, need_emails, filte return res end +--[[[ +-- @function lua_util.deepcopy(table) +-- params: { +- - table +-- } +-- Performs deep copy of the table. Including metatables +--]] +local function deepcopy(orig) + local orig_type = type(orig) + local copy + if orig_type == 'table' then + copy = {} + for orig_key, orig_value in next, orig, nil do + copy[deepcopy(orig_key)] = deepcopy(orig_value) + end + setmetatable(copy, deepcopy(getmetatable(orig))) + else -- number, string, boolean, etc + copy = orig + end + return copy +end + +exports.deepcopy = deepcopy + -- Debugging support local unconditional_debug = false local debug_modules = {} diff --git a/src/plugins/lua/reputation.lua b/src/plugins/lua/reputation.lua index f5b461d78..5d3f64b59 100644 --- a/src/plugins/lua/reputation.lua +++ b/src/plugins/lua/reputation.lua @@ -996,20 +996,6 @@ local function reputation_idempotent_cb(task, rule) end end -local function deepcopy(orig) - local orig_type = type(orig) - local copy - if orig_type == 'table' then - copy = {} - for orig_key, orig_value in next, orig, nil do - copy[deepcopy(orig_key)] = deepcopy(orig_value) - end - setmetatable(copy, deepcopy(getmetatable(orig))) - else -- number, string, boolean, etc - copy = orig - end - return copy -end local function override_defaults(def, override) for k,v in pairs(override) do if k ~= 'selector' and k ~= 'backend' then @@ -1059,8 +1045,8 @@ local function parse_rule(name, tbl) end -- Allow config override local rule = { - selector = deepcopy(selector), - backend = deepcopy(backend), + selector = lua_util.deepcopy(selector), + backend = lua_util.deepcopy(backend), config = {} }