aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver/symcache/symcache_runtime.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/libserver/symcache/symcache_runtime.cxx')
-rw-r--r--src/libserver/symcache/symcache_runtime.cxx16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/libserver/symcache/symcache_runtime.cxx b/src/libserver/symcache/symcache_runtime.cxx
index 7ee8b9cd9..e09411845 100644
--- a/src/libserver/symcache/symcache_runtime.cxx
+++ b/src/libserver/symcache/symcache_runtime.cxx
@@ -119,6 +119,7 @@ symcache_runtime::process_settings(struct rspamd_task *task, const symcache &cac
const auto *enabled = ucl_object_lookup(task->settings, "symbols_enabled");
if (enabled) {
+ msg_debug_cache_task("disable all symbols as `symbols_enabled` is found");
/* Disable all symbols but selected */
disable_all_symbols(SYMBOL_TYPE_EXPLICIT_DISABLE);
already_disabled = true;
@@ -159,9 +160,8 @@ symcache_runtime::process_settings(struct rspamd_task *task, const symcache &cac
auto symcache_runtime::disable_all_symbols(int skip_mask) -> void
{
- for (auto i = 0; i < order->size(); i++) {
+ for (auto [i, item] : rspamd::enumerate(order->d)) {
auto *dyn_item = &dynamic_items[i];
- const auto &item = order->d[i];
if (!(item->get_flags() & skip_mask)) {
dyn_item->finished = true;
@@ -424,13 +424,14 @@ symcache_runtime::process_filters(struct rspamd_task *task, symcache &cache, int
auto all_done = true;
for (const auto [idx, item] : rspamd::enumerate(order->d)) {
- if (item->type == symcache_item_type::CLASSIFIER) {
+ /* Exclude all non filters */
+ if (item->type != symcache_item_type::FILTER) {
continue;
}
auto dyn_item = &dynamic_items[idx];
- if (!dyn_item->started && !dyn_item->finished) {
+ if (!dyn_item->started) {
all_done = false;
if (!check_item_deps(task, cache, item.get(),
@@ -438,7 +439,7 @@ symcache_runtime::process_filters(struct rspamd_task *task, symcache &cache, int
msg_debug_cache_task("blocked execution of %d(%s) unless deps are "
"resolved", item->id, item->symbol.c_str());
- break;
+ continue;
}
process_symbol(task, cache, item.get(), dyn_item);
@@ -447,7 +448,7 @@ symcache_runtime::process_filters(struct rspamd_task *task, symcache &cache, int
/* Delay */
has_slow = false;
- break;
+ return false;
}
}
@@ -508,13 +509,12 @@ symcache_runtime::process_symbol(struct rspamd_task *task, symcache &cache, cach
dyn_item->start_msec = (ev_now(task->event_loop) -
profile_start) * 1e3;
}
-
dyn_item->async_events = 0;
cur_item = item;
items_inflight++;
/* Callback now must finalize itself */
item->call(task);
- cur_item = NULL;
+ cur_item = nullptr;
if (items_inflight == 0) {
return true;