From d3a00149e41f959408ac487f8428204693cdd79a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 15 Oct 2015 16:13:39 +0100 Subject: [PATCH] Fix unknown symbols registration. --- src/libserver/cfg_rcl.c | 4 ++++ src/libserver/symbols_cache.c | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index fcfbb716b..596fff74a 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -426,6 +426,10 @@ rspamd_rcl_metric_handler (rspamd_mempool_t *pool, const ucl_object_t *obj, return FALSE; } + if (metric->unknown_weight > 0) { + metric->accept_unknown_symbols = TRUE; + } + /* Handle actions */ val = ucl_object_find_key (obj, "actions"); if (val != NULL) { diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 5e72eb97c..927e84cd5 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -749,8 +749,9 @@ rspamd_symbols_cache_validate_cb (gpointer k, gpointer v, gpointer ud) /* Check whether this item is skipped */ skipped = !ghost; - if ((item->type & SYMBOL_TYPE_NORMAL) && cache->cfg && - g_hash_table_lookup (cache->cfg->metrics_symbols, item->symbol) == NULL) { + if ((item->type & (SYMBOL_TYPE_NORMAL|SYMBOL_TYPE_VIRTUAL|SYMBOL_TYPE_COMPOSITE)) + && cache->cfg + && g_hash_table_lookup (cache->cfg->metrics_symbols, item->symbol) == NULL) { cur = g_list_first (cache->cfg->metrics_list); while (cur) { m = cur->data; @@ -759,7 +760,7 @@ rspamd_symbols_cache_validate_cb (gpointer k, gpointer v, gpointer ud) GList *mlist; skipped = FALSE; - item->weight = item->weight * (m->unknown_weight); + item->weight = m->unknown_weight; s = rspamd_mempool_alloc0 (cache->static_pool, sizeof (*s)); s->name = item->symbol; -- 2.39.5