diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-10-06 18:12:38 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-10-06 18:13:04 +0100 |
commit | adedfbabb36a30576a090c2768cc6c6352327dd9 (patch) | |
tree | fcde4f1ba2a64fee789619da191584e57d119df2 | |
parent | 34e24051282cab18f3da7a55d247bf61448defda (diff) | |
download | rspamd-adedfbabb36a30576a090c2768cc6c6352327dd9.tar.gz rspamd-adedfbabb36a30576a090c2768cc6c6352327dd9.zip |
[Minor] More support of backend-less classifiers
-rw-r--r-- | src/libstat/stat_config.c | 14 | ||||
-rw-r--r-- | src/libstat/stat_process.c | 14 |
2 files changed, 23 insertions, 5 deletions
diff --git a/src/libstat/stat_config.c b/src/libstat/stat_config.c index 48f572468..59159da63 100644 --- a/src/libstat/stat_config.c +++ b/src/libstat/stat_config.c @@ -234,8 +234,11 @@ rspamd_stat_init (struct rspamd_config *cfg, struct event_base *ev_base) st = g_slice_alloc0 (sizeof (*st)); st->classifier = cl; st->stcf = stf; - st->backend = bk; - st->bkcf = bk->init (stat_ctx, cfg, st); + + if (!(cl->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND)) { + st->backend = bk; + st->bkcf = bk->init (stat_ctx, cfg, st); + } msg_debug_config ("added backend %s for symbol %s", bk->name, stf->symbol); @@ -256,7 +259,8 @@ rspamd_stat_init (struct rspamd_config *cfg, struct event_base *ev_base) } } - if (st->bkcf == NULL) { + if (st->bkcf == NULL && + !(cl->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND)) { msg_err_config ("cannot init backend %s for statfile %s", clf->backend, stf->symbol); @@ -297,7 +301,9 @@ rspamd_stat_close (void) for (j = 0; j < cl->statfiles_ids->len; j ++) { id = g_array_index (cl->statfiles_ids, gint, j); st = g_ptr_array_index (st_ctx->statfiles, id); - st->backend->close (st->bkcf); + if (!(st->classifier->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND)) { + st->backend->close (st->bkcf); + } g_slice_free1 (sizeof (*st), st); } diff --git a/src/libstat/stat_process.c b/src/libstat/stat_process.c index 228360fa6..7eeac00c1 100644 --- a/src/libstat/stat_process.c +++ b/src/libstat/stat_process.c @@ -306,8 +306,13 @@ rspamd_stat_backends_process (struct rspamd_stat_ctx *st_ctx, for (i = 0; i < st_ctx->statfiles->len; i++) { st = g_ptr_array_index (st_ctx->statfiles, i); - bk_run = g_ptr_array_index (task->stat_runtimes, i); cl = st->classifier; + + if (cl->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND) { + continue; + } + + bk_run = g_ptr_array_index (task->stat_runtimes, i); g_assert (st != NULL); if (bk_run != NULL) { @@ -333,12 +338,19 @@ rspamd_stat_backends_post_process (struct rspamd_stat_ctx *st_ctx, { guint i; struct rspamd_statfile *st; + struct rspamd_classifier *cl; gpointer bk_run; g_assert (task->stat_runtimes != NULL); for (i = 0; i < st_ctx->statfiles->len; i++) { st = g_ptr_array_index (st_ctx->statfiles, i); + cl = st->classifier; + + if (cl->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND) { + continue; + } + bk_run = g_ptr_array_index (task->stat_runtimes, i); g_assert (st != NULL); |