]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Fix registering of composites.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 28 May 2015 10:59:08 +0000 (11:59 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 28 May 2015 10:59:08 +0000 (11:59 +0100)
src/libserver/cfg_rcl.c
src/libserver/cfg_utils.c
src/libserver/symbols_cache.c
src/libserver/symbols_cache.h
src/lua/lua_cfg_file.c
src/lua/lua_config.c

index 3e8e639e07e27925311fdbde13bead5b1e7f759f..314be10d0b0e971f374d43b4f5dbc168449fb60f 100644 (file)
@@ -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;
index fe7b47b30d820dd063a6ab7121263e9be22f85de..24edc45b5702796097369354d4ef4991b94211d6 100644 (file)
@@ -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
index 2c62cd6be900caa7671ea9ef6b7dba5edb407f0c..9901b8b011112a4db6babcae3f6b272327f48548 100644 (file)
@@ -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 &&
index 9c182db39e244c6d2925967cfe0ce857785e0a5e..e9690c1d6e4a6cfae1362ca6861d8b08c65886a7 100644 (file)
@@ -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
 };
 
 /**
index b40c8185fb826c75f2b19691b002307a15522ec8..047a5119bfb30f664ed4d910ef96d8526250224e 100644 (file)
@@ -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);
                                }
                        }
                }
index 3fef0cf4be028032d280d5790113c75482fe8e3e..6d1d3a8e53109986a40459875254511d2df57c6d 100644 (file)
@@ -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;