From 1538ca59eb45d7c01e4cdd25e1ae57a0255d65b3 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 8 Mar 2016 15:00:38 +0000 Subject: [PATCH] [Fix] Resort symbols cache if it has been changed --- src/libserver/symbols_cache.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index f7b410c287..daeadcfe6e 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, -- 2.47.3