From d69aea948b25168bc6d0240009952b1e1ee32bc8 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 28 Jun 2016 12:29:43 +0100 Subject: [PATCH] [Feature] Allow to change flag from fuzzy learn condition --- src/plugins/fuzzy_check.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) 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" -- 2.39.5