diff options
Diffstat (limited to 'src/libserver/symcache/symcache_runtime.cxx')
-rw-r--r-- | src/libserver/symcache/symcache_runtime.cxx | 16 |
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; |