From: Vsevolod Stakhov Date: Tue, 8 Mar 2016 15:00:38 +0000 (+0000) Subject: [Fix] Resort symbols cache if it has been changed X-Git-Tag: 1.2.0~97 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1538ca59eb45d7c01e4cdd25e1ae57a0255d65b3;p=thirdparty%2Frspamd.git [Fix] Resort symbols cache if it has been changed --- 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,