aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-02-17 13:20:32 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-02-17 13:20:32 +0000
commitadf7e9733ac8d4b3816279bc96e6672f982052ff (patch)
treea3eea4a71d371acb7e172f0cdd26cbe6c1d38e59
parent77d65b7266828dccdec909d352f2c1238e970e4b (diff)
downloadrspamd-adf7e9733ac8d4b3816279bc96e6672f982052ff.tar.gz
rspamd-adf7e9733ac8d4b3816279bc96e6672f982052ff.zip
Add the concept of ghost symbols.
-rw-r--r--src/libserver/symbols_cache.c13
-rw-r--r--src/libserver/symbols_cache.h1
2 files changed, 11 insertions, 3 deletions
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;