From: Vsevolod Stakhov Date: Thu, 28 May 2015 10:59:08 +0000 (+0100) Subject: Fix registering of composites. X-Git-Tag: 1.0.0~592 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c84185a3476fcc1177eee00efc7549a90d9a2887;p=thirdparty%2Frspamd.git Fix registering of composites. --- diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 3e8e639e07..314be10d0b 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -1136,7 +1136,8 @@ rspamd_rcl_composite_handler (rspamd_mempool_t *pool, composite); if (new) { - rspamd_symbols_cache_add_symbol_virtual (cfg->cache, composite_name, 1); + rspamd_symbols_cache_add_symbol (cfg->cache, composite_name, 1, 0, + NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1); } return TRUE; diff --git a/src/libserver/cfg_utils.c b/src/libserver/cfg_utils.c index fe7b47b30d..24edc45b57 100644 --- a/src/libserver/cfg_utils.c +++ b/src/libserver/cfg_utils.c @@ -680,7 +680,9 @@ symbols_classifiers_callback (gpointer key, gpointer value, gpointer ud) { struct rspamd_config *cfg = ud; - rspamd_symbols_cache_add_symbol_virtual (cfg->cache, key, 1.0); + /* Actually, statistics should act like any ordinary symbol */ + rspamd_symbols_cache_add_symbol (cfg->cache, key, 1.0, 0, NULL, NULL, + SYMBOL_TYPE_COMPOSITE, -1); } void diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 2c62cd6be9..9901b8b011 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -673,6 +673,7 @@ rspamd_symbols_cache_process_symbol (struct rspamd_task * task, } if (item->type == SYMBOL_TYPE_NORMAL || item->type == SYMBOL_TYPE_CALLBACK) { + g_assert (item->func != NULL); t1 = rspamd_get_ticks (); if (item->symbol != NULL && diff --git a/src/libserver/symbols_cache.h b/src/libserver/symbols_cache.h index 9c182db39e..e9690c1d6e 100644 --- a/src/libserver/symbols_cache.h +++ b/src/libserver/symbols_cache.h @@ -41,7 +41,8 @@ enum rspamd_symbol_type { SYMBOL_TYPE_VIRTUAL, SYMBOL_TYPE_CALLBACK, SYMBOL_TYPE_GHOST, - SYMBOL_TYPE_SKIPPED + SYMBOL_TYPE_SKIPPED, + SYMBOL_TYPE_COMPOSITE }; /** diff --git a/src/lua/lua_cfg_file.c b/src/lua/lua_cfg_file.c index b40c8185fb..047a5119bf 100644 --- a/src/lua/lua_cfg_file.c +++ b/src/lua/lua_cfg_file.c @@ -212,8 +212,8 @@ rspamd_lua_post_load_config (struct rspamd_config *cfg) } else { g_hash_table_insert (cfg->composite_symbols, sym, expr); - rspamd_symbols_cache_add_symbol_virtual (cfg->cache, sym, - 1, -1); + rspamd_symbols_cache_add_symbol (cfg->cache, sym, + 1, 0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1); } } } diff --git a/src/lua/lua_config.c b/src/lua/lua_config.c index 3fef0cf4be..6d1d3a8e53 100644 --- a/src/lua/lua_config.c +++ b/src/lua/lua_config.c @@ -1191,8 +1191,8 @@ lua_config_add_composite (lua_State * L) composite); if (new) { - rspamd_symbols_cache_add_symbol_virtual (cfg->cache, name, - 1, -1); + rspamd_symbols_cache_add_symbol (cfg->cache, name, + 1, 0, NULL, NULL, SYMBOL_TYPE_COMPOSITE, -1); } ret = TRUE;