From: Vsevolod Stakhov Date: Mon, 15 Jan 2024 15:25:23 +0000 (+0000) Subject: [Minor] Fix scripts invocation X-Git-Tag: 3.8.0~8^2~4 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7b9dd286eae49337eaebdd41cfbc5d3569a1e585;p=rspamd.git [Minor] Fix scripts invocation --- diff --git a/lualib/lua_bayes_redis.lua b/lualib/lua_bayes_redis.lua index 3321c96c3..6f6c27403 100644 --- a/lualib/lua_bayes_redis.lua +++ b/lualib/lua_bayes_redis.lua @@ -179,7 +179,7 @@ local function gen_cache_check_functor(redis_params, check_script_id) if err then callback(task, false, err) else - callback(task, true, data[1], data[2], data[3], data[4]) + callback(task, true, tonumber(data)) end end @@ -190,20 +190,15 @@ local function gen_cache_check_functor(redis_params, check_script_id) end local function gen_cache_learn_functor(redis_params, learn_script_id) - return function(task, cache_id, callback) + return function(task, cache_id, is_spam) local function learn_redis_cb(err, data) lua_util.debugm(N, task, 'learn_cache redis cb: %s, %s', err, data) - if err then - callback(task, false, err) - else - callback(task, true) - end end lua_redis.exec_redis_script(learn_script_id, { task = task, is_write = true, key = cache_id }, learn_redis_cb, - { cache_id }) + { cache_id, is_spam and "1" or "0" }) end end diff --git a/src/libstat/learn_cache/redis_cache.cxx b/src/libstat/learn_cache/redis_cache.cxx index e53bd4df0..86a6a35d4 100644 --- a/src/libstat/learn_cache/redis_cache.cxx +++ b/src/libstat/learn_cache/redis_cache.cxx @@ -217,22 +217,28 @@ static gint rspamd_stat_cache_checked(lua_State *L) { auto *task = lua_check_task(L, 1); - auto val = lua_tointeger(L, 2); - - if ((val > 0 && (task->flags & RSPAMD_TASK_FLAG_LEARN_SPAM)) || - (val < 0 && (task->flags & RSPAMD_TASK_FLAG_LEARN_HAM))) { - /* Already learned */ - msg_info_task("<%s> has been already " - "learned as %s, ignore it", - MESSAGE_FIELD(task, message_id), - (task->flags & RSPAMD_TASK_FLAG_LEARN_SPAM) ? "spam" : "ham"); - task->flags |= RSPAMD_TASK_FLAG_ALREADY_LEARNED; - } - else if (val != 0) { - /* Unlearn flag */ - task->flags |= RSPAMD_TASK_FLAG_UNLEARN; + auto res = lua_toboolean(L, 2); + + if (res) { + auto val = lua_tointeger(L, 3); + + if ((val > 0 && (task->flags & RSPAMD_TASK_FLAG_LEARN_SPAM)) || + (val < 0 && (task->flags & RSPAMD_TASK_FLAG_LEARN_HAM))) { + /* Already learned */ + msg_info_task("<%s> has been already " + "learned as %s, ignore it", + MESSAGE_FIELD(task, message_id), + (task->flags & RSPAMD_TASK_FLAG_LEARN_SPAM) ? "spam" : "ham"); + task->flags |= RSPAMD_TASK_FLAG_ALREADY_LEARNED; + } + else if (val != 0) { + /* Unlearn flag */ + task->flags |= RSPAMD_TASK_FLAG_UNLEARN; + } } + /* Ignore errors for now, as we can do nothing about them at the moment */ + return 0; }