diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-07-15 09:50:06 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-07-15 09:50:06 +0100 |
commit | 774b55a4705d9e303d5601181ff8779738a2d8e8 (patch) | |
tree | bc9a6dd3af394f589505c080869cca47cf775ca8 /src/libserver | |
parent | 7fcce899c3ab7c2c10d55d523b50cea7355883f5 (diff) | |
download | rspamd-774b55a4705d9e303d5601181ff8779738a2d8e8.tar.gz rspamd-774b55a4705d9e303d5601181ff8779738a2d8e8.zip |
[Fix] Fix post-filters processing
Diffstat (limited to 'src/libserver')
-rw-r--r-- | src/libserver/symbols_cache.c | 11 | ||||
-rw-r--r-- | src/libserver/symbols_cache.h | 2 | ||||
-rw-r--r-- | src/libserver/task.c | 9 |
3 files changed, 13 insertions, 9 deletions
diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index c38496ecc..61060e29c 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -1428,7 +1428,7 @@ rspamd_symbols_cache_process_settings (struct rspamd_task *task, gboolean rspamd_symbols_cache_process_symbols (struct rspamd_task * task, - struct symbols_cache *cache) + struct symbols_cache *cache, gint stage) { struct cache_item *item = NULL; struct cache_savepoint *checkpoint; @@ -1478,10 +1478,10 @@ rspamd_symbols_cache_process_symbols (struct rspamd_task * task, } } - if (all_done) { + if (all_done || stage == RSPAMD_TASK_STAGE_FILTERS) { checkpoint->pass = RSPAMD_CACHE_PASS_FILTERS; - return rspamd_symbols_cache_process_symbols (task, cache); + return rspamd_symbols_cache_process_symbols (task, cache, stage); } break; case RSPAMD_CACHE_PASS_FILTERS: @@ -1577,10 +1577,11 @@ rspamd_symbols_cache_process_symbols (struct rspamd_task * task, } } - if (checkpoint->waitq->len == 0) { + if (checkpoint->waitq->len == 0 || + stage == RSPAMD_TASK_STAGE_POST_FILTERS) { checkpoint->pass = RSPAMD_CACHE_PASS_POSTFILTERS; - return rspamd_symbols_cache_process_symbols (task, cache); + return rspamd_symbols_cache_process_symbols (task, cache, stage); } break; diff --git a/src/libserver/symbols_cache.h b/src/libserver/symbols_cache.h index 290e754d0..28695f446 100644 --- a/src/libserver/symbols_cache.h +++ b/src/libserver/symbols_cache.h @@ -142,7 +142,7 @@ guint rspamd_symbols_cache_symbols_count (struct symbols_cache *cache); * @param saved_item pointer to currently saved item */ gboolean rspamd_symbols_cache_process_symbols (struct rspamd_task *task, - struct symbols_cache *cache); + struct symbols_cache *cache, gint stage); /** * Validate cache items agains theirs weights defined in metrics diff --git a/src/libserver/task.c b/src/libserver/task.c index 121e1bc64..2e250eaaa 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -574,11 +574,13 @@ rspamd_task_process (struct rspamd_task *task, guint stages) break; case RSPAMD_TASK_STAGE_PRE_FILTERS: - rspamd_symbols_cache_process_symbols (task, task->cfg->cache); + rspamd_symbols_cache_process_symbols (task, task->cfg->cache, + RSPAMD_TASK_STAGE_PRE_FILTERS); break; case RSPAMD_TASK_STAGE_FILTERS: - rspamd_symbols_cache_process_symbols (task, task->cfg->cache); + rspamd_symbols_cache_process_symbols (task, task->cfg->cache, + RSPAMD_TASK_STAGE_FILTERS); break; case RSPAMD_TASK_STAGE_CLASSIFIERS: @@ -598,7 +600,8 @@ rspamd_task_process (struct rspamd_task *task, guint stages) break; case RSPAMD_TASK_STAGE_POST_FILTERS: - rspamd_symbols_cache_process_symbols (task, task->cfg->cache); + rspamd_symbols_cache_process_symbols (task, task->cfg->cache, + RSPAMD_TASK_STAGE_POST_FILTERS); if ((task->flags & RSPAMD_TASK_FLAG_LEARN_AUTO) && !RSPAMD_TASK_IS_EMPTY (task) && |