diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-07-12 17:36:58 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-07-12 17:36:58 +0100 |
commit | 2785fadecc3d0a2a849ba17bc0ab14a48bee7e4c (patch) | |
tree | a056a26243c8c251b7fe8f864abe949e32dcaaf6 /src/libserver/composites.c | |
parent | 437727abc962967796b726814dcdf9d3c713a475 (diff) | |
download | rspamd-2785fadecc3d0a2a849ba17bc0ab14a48bee7e4c.tar.gz rspamd-2785fadecc3d0a2a849ba17bc0ab14a48bee7e4c.zip |
[Feature] Allow to disable composite rules from settings
Diffstat (limited to 'src/libserver/composites.c')
-rw-r--r-- | src/libserver/composites.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/libserver/composites.c b/src/libserver/composites.c index 8e2df32f7..917d1d0c3 100644 --- a/src/libserver/composites.c +++ b/src/libserver/composites.c @@ -258,18 +258,28 @@ composites_foreach_callback (gpointer key, gpointer value, void *data) cd->composite = comp; - rc = rspamd_process_expression (comp->expr, RSPAMD_EXPRESSION_FLAG_NOOPT, cd); + if (!isset (cd->checked, cd->composite->id * 2)) { + if (rspamd_symbols_cache_is_checked (cd->task, cd->task->cfg->cache, + key)) { + setbit (cd->checked, comp->id * 2); + clrbit (cd->checked, comp->id * 2 + 1); + } + else { + rc = rspamd_process_expression (comp->expr, + RSPAMD_EXPRESSION_FLAG_NOOPT, cd); - /* Checked bit */ - setbit (cd->checked, comp->id * 2); + /* Checked bit */ + setbit (cd->checked, comp->id * 2); - /* Result bit */ - if (rc) { - setbit (cd->checked, comp->id * 2 + 1); - rspamd_task_insert_result_single (cd->task, key, 1.0, NULL); - } - else { - clrbit (cd->checked, comp->id * 2 + 1); + /* Result bit */ + if (rc) { + setbit (cd->checked, comp->id * 2 + 1); + rspamd_task_insert_result_single (cd->task, key, 1.0, NULL); + } + else { + clrbit (cd->checked, comp->id * 2 + 1); + } + } } } |