aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstat
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2024-04-19 14:06:05 +0100
committerVsevolod Stakhov <vsevolod@rspamd.com>2024-04-19 14:06:05 +0100
commit6cf9ca1f978c3da18917e745268e5f01091ac55b (patch)
treee84711bc0ccbe8516d1c0887279ca56aacd77e62 /src/libstat
parent748f80fdfe4076488442aecf418fa8ac30bce72e (diff)
downloadrspamd-6cf9ca1f978c3da18917e745268e5f01091ac55b.tar.gz
rspamd-6cf9ca1f978c3da18917e745268e5f01091ac55b.zip
[Fix] If we have one statfile disabled we need to disable all
Diffstat (limited to 'src/libstat')
-rw-r--r--src/libstat/stat_process.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libstat/stat_process.c b/src/libstat/stat_process.c
index 7f62d4e2a..33b7053f8 100644
--- a/src/libstat/stat_process.c
+++ b/src/libstat/stat_process.c
@@ -329,6 +329,18 @@ rspamd_stat_preprocess(struct rspamd_stat_ctx *st_ctx,
g_ptr_array_index(task->stat_runtimes, i) = NULL;
msg_debug_bayes("symbol %s is disabled, skip classification",
st->stcf->symbol);
+ /* We need to disable the whole classifier for this! */
+ struct rspamd_classifier *cl = st->classifier;
+ for (int j = 0; j < st_ctx->statfiles->len; j++) {
+ struct rspamd_statfile *nst = g_ptr_array_index(st_ctx->statfiles, j);
+
+ if (st != nst && nst->classifier == cl) {
+ g_ptr_array_index(task->stat_runtimes, j) = NULL;
+ msg_debug_bayes("symbol %s is disabled, skip classification for %s as well",
+ st->stcf->symbol, nst->stcf->symbol);
+ }
+ }
+
continue;
}