From 2d9875672ffe739d00ffb6a072eb9536ffdae3b3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 15 Feb 2021 21:22:34 +0000 Subject: [PATCH] [Fix] Lua_task: Fix deleted symbols in has_symbol/get_symbol --- src/lua/lua_task.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index 3bd84d886..31694df36 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -4465,7 +4465,7 @@ lua_push_symbol_result (lua_State *L, s = symbol_result; } - if (s) { + if (s && !(s->flags & RSPAMD_SYMBOL_RESULT_IGNORED)) { if (add_metric) { table_fields_cnt++; } @@ -4573,6 +4573,7 @@ lua_task_has_symbol (lua_State *L) { LUA_TRACE_POINT; struct rspamd_task *task = lua_check_task (L, 1); + struct rspamd_symbol_result *s; const gchar *symbol; gboolean found = FALSE; @@ -4580,11 +4581,19 @@ lua_task_has_symbol (lua_State *L) if (task && symbol) { if (lua_isstring (L, 3)) { - found = (rspamd_task_find_symbol_result (task, symbol, - rspamd_find_metric_result (task, lua_tostring (L, 3))) != NULL); + s = rspamd_task_find_symbol_result (task, symbol, + rspamd_find_metric_result (task, lua_tostring (L, 3))); + + if (s && !(s->flags & RSPAMD_SYMBOL_RESULT_IGNORED)) { + found = TRUE; + } } else { - found = (rspamd_task_find_symbol_result (task, symbol, NULL) != NULL); + s = rspamd_task_find_symbol_result (task, symbol, NULL); + + if (s && !(s->flags & RSPAMD_SYMBOL_RESULT_IGNORED)) { + found = TRUE; + } } lua_pushboolean (L, found); } -- 2.39.5