From eea4d934355c80febfab60f06d19824c8f921757 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 12 Jul 2016 17:22:18 +0100 Subject: [PATCH] [Fix] Fix symbols registration and execution --- src/libserver/symbols_cache.c | 2 +- src/lua/lua_config.c | 29 ++++++++++++++++++++--------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 4bed6ad3a..f74982ff6 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -1125,7 +1125,7 @@ rspamd_symbols_cache_check_symbol (struct rspamd_task *task, gboolean check = TRUE; const gdouble slow_diff_limit = 1e5; - if (item->type & (SYMBOL_TYPE_NORMAL|SYMBOL_TYPE_CALLBACK)) { + if (item->func) { g_assert (item->func != NULL); /* Check has been started */ diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c index d16c645a6..ee6ab3ef7 100644 --- a/src/lua/lua_config.c +++ b/src/lua/lua_config.c @@ -783,13 +783,24 @@ rspamd_register_symbol_fromlua (lua_State *L, } } - ret = rspamd_symbols_cache_add_symbol (cfg->cache, - name, - priority, - lua_metric_symbol_callback, - cd, - type, - parent); + if (ref != -1) { + ret = rspamd_symbols_cache_add_symbol (cfg->cache, + name, + priority, + lua_metric_symbol_callback, + cd, + type, + parent); + } + else { + ret = rspamd_symbols_cache_add_symbol (cfg->cache, + name, + priority, + NULL, + cd, + type, + parent); + } rspamd_mempool_add_destructor (cfg->cfg_pool, (rspamd_mempool_destruct_t)lua_destroy_cfg_symbol, cd); @@ -924,10 +935,10 @@ lua_parse_symbol_type (const gchar *str) ret = SYMBOL_TYPE_NORMAL; } else if (strcmp (str, "prefilter") == 0) { - ret = SYMBOL_TYPE_PREFILTER; + ret = SYMBOL_TYPE_PREFILTER|SYMBOL_TYPE_GHOST; } else if (strcmp (str, "postfilter") == 0) { - ret = SYMBOL_TYPE_POSTFILTER; + ret = SYMBOL_TYPE_POSTFILTER|SYMBOL_TYPE_GHOST; } else { msg_warn ("bad type: %s", str); -- 2.39.5