From: Vsevolod Stakhov Date: Tue, 17 Feb 2015 13:20:32 +0000 (+0000) Subject: Add the concept of ghost symbols. X-Git-Tag: 0.9.0~680 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=adf7e9733ac8d4b3816279bc96e6672f982052ff;p=rspamd.git Add the concept of ghost symbols. --- diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 5f6a2cd72..0ecd6e6e8 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -316,7 +316,7 @@ register_symbol_common (struct symbols_cache **cache, GList **target, *cur; struct metric *m; struct rspamd_symbol_def *s; - gboolean skipped; + gboolean skipped, ghost = (weight == 0.0); if (*cache == NULL) { pcache = g_new0 (struct symbols_cache, 1); @@ -365,7 +365,7 @@ register_symbol_common (struct symbols_cache **cache, } /* Check whether this item is skipped */ - skipped = TRUE; + skipped = !ghost; if (!item->is_callback && pcache->cfg && g_hash_table_lookup (pcache->cfg->metrics_symbols, name) == NULL) { cur = g_list_first (pcache->cfg->metrics_list); @@ -401,14 +401,21 @@ register_symbol_common (struct symbols_cache **cache, } item->is_skipped = skipped; + item->is_ghost = ghost; + if (skipped) { msg_warn ("symbol %s is not registered in any metric, so skip its check", name); } + if (ghost) { + msg_debug ("symbol %s is registered as ghost symbol, it won't be inserted " + "to any metric", name); + } + /* If we have undefined priority determine list according to weight */ if (priority == 0) { - if (item->s->weight > 0) { + if (item->s->weight >= 0) { target = &(*cache)->static_items; } else { diff --git a/src/libserver/symbols_cache.h b/src/libserver/symbols_cache.h index d2694fd04..3baf749ab 100644 --- a/src/libserver/symbols_cache.h +++ b/src/libserver/symbols_cache.h @@ -50,6 +50,7 @@ struct cache_item { /* Flags of virtual symbols */ gboolean is_virtual; gboolean is_callback; + gboolean is_ghost; /* Priority */ gint priority;