From: Vsevolod Stakhov Date: Tue, 28 Jun 2016 11:29:43 +0000 (+0100) Subject: [Feature] Allow to change flag from fuzzy learn condition X-Git-Tag: 1.3.0~233 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=d69aea948b25168bc6d0240009952b1e1ee32bc8;p=rspamd.git [Feature] Allow to change flag from fuzzy learn condition --- diff --git a/src/plugins/fuzzy_check.c b/src/plugins/fuzzy_check.c index f775e9e09..bda4a12bc 100644 --- a/src/plugins/fuzzy_check.c +++ b/src/plugins/fuzzy_check.c @@ -2348,17 +2348,28 @@ fuzzy_process_handler (struct rspamd_http_connection_entry *conn_ent, *ptask = task; rspamd_lua_setclass (L, "rspamd{task}", -1); - if (lua_pcall (L, 1, 1, err_idx) != 0) { + if (lua_pcall (L, 1, LUA_MULTRET, err_idx) != 0) { tb = lua_touserdata (L, -1); msg_err_task ("call to user extraction script failed: %v", tb); g_string_free (tb, TRUE); } else { - skip = !(lua_toboolean (L, -1)); + if (lua_gettop (L) > 1) { + skip = !(lua_toboolean (L, -2)); + + if (lua_isnumber (L, -1)) { + msg_info_task ("learn condition changed flag from %d to " + "%d", flag, (guint)lua_tonumber (L, -1)); + flag = lua_tonumber (L, -1); + } + } + else { + skip = !(lua_toboolean (L, -1)); + } } /* Result + error function */ - lua_pop (L, 2); + lua_settop (L, 0); if (skip) { msg_info_task ("skip rule %s as its condition callback returned"