diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-03-08 15:00:38 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-03-08 15:00:38 +0000 |
commit | 1538ca59eb45d7c01e4cdd25e1ae57a0255d65b3 (patch) | |
tree | a31640bc84f7004f4a2a6e4c4ad0e636906b56b0 /src | |
parent | fa31a3408b2cf293b1c4f7b2f707121df10d4dfb (diff) | |
download | rspamd-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.c | 11 |
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, |