aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-03-08 15:00:38 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-03-08 15:00:38 +0000
commit1538ca59eb45d7c01e4cdd25e1ae57a0255d65b3 (patch)
treea31640bc84f7004f4a2a6e4c4ad0e636906b56b0 /src
parentfa31a3408b2cf293b1c4f7b2f707121df10d4dfb (diff)
downloadrspamd-1538ca59eb45d7c01e4cdd25e1ae57a0255d65b3.tar.gz
rspamd-1538ca59eb45d7c01e4cdd25e1ae57a0255d65b3.zip
[Fix] Resort symbols cache if it has been changed
Diffstat (limited to 'src')
-rw-r--r--src/libserver/symbols_cache.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c
index f7b410c28..daeadcfe6 100644
--- a/src/libserver/symbols_cache.c
+++ b/src/libserver/symbols_cache.c
@@ -1282,6 +1282,17 @@ rspamd_symbols_cache_process_symbols (struct rspamd_task * task,
g_assert (cache != NULL);
if (task->checkpoint == NULL) {
+
+ if (cache->items_by_id->len != cache->items_by_order->d->len) {
+ /*
+ * Cache has been modified, need to resort it
+ */
+ msg_info_cache ("symbols cache has been modified since last check:"
+ " old items: %ud, new items: %ud",
+ cache->items_by_order->d->len, cache->items_by_id->len);
+ rspamd_symbols_cache_resort (cache);
+ }
+
checkpoint = rspamd_mempool_alloc0 (task->task_pool, sizeof (*checkpoint));
/* Bit 0: check started, Bit 1: check finished */
checkpoint->processed_bits = rspamd_mempool_alloc0 (task->task_pool,