diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2022-05-05 22:11:36 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rspamd.com> | 2022-05-05 22:11:36 +0100 |
commit | 66b22c2eee1b4c13f55c8057b3237a70baf089b0 (patch) | |
tree | fbe8d32737d87fab228058096c5c563f2b7cba0c /src | |
parent | ba79557df94aa5e8756914338063e59a61ac6328 (diff) | |
download | rspamd-66b22c2eee1b4c13f55c8057b3237a70baf089b0.tar.gz rspamd-66b22c2eee1b4c13f55c8057b3237a70baf089b0.zip |
[Minor] Some symcache neats
Diffstat (limited to 'src')
-rw-r--r-- | src/libserver/symcache/symcache_impl.cxx | 29 | ||||
-rw-r--r-- | src/libserver/symcache/symcache_runtime.cxx | 4 |
2 files changed, 15 insertions, 18 deletions
diff --git a/src/libserver/symcache/symcache_impl.cxx b/src/libserver/symcache/symcache_impl.cxx index ab1b41fc4..8da0cbecb 100644 --- a/src/libserver/symcache/symcache_impl.cxx +++ b/src/libserver/symcache/symcache_impl.cxx @@ -1027,24 +1027,21 @@ symcache::process_settings_elt(struct rspamd_config_settings_elt *elt) -> void if (item != nullptr) { if (item->is_virtual()) { - if (!(item->flags & SYMBOL_TYPE_GHOST)) { - auto *parent = get_item_by_name_mut(sym, true); - - if (parent) { - if (elt->symbols_disabled && - ucl_object_lookup(elt->symbols_disabled, parent->symbol.data())) { - msg_err_cache ("conflict in %s: cannot enable disabled symbol %s, " - "wanted to enable symbol %s", - elt->name, parent->symbol.data(), sym); - continue; - } - - parent->exec_only_ids.add_id(id, static_pool); - msg_debug_cache ("allow just execution of symbol %s for settings %ud (%s)", - parent->symbol.data(), id, elt->name); + auto *parent = get_item_by_name_mut(sym, true); + + if (parent) { + if (elt->symbols_disabled && + ucl_object_lookup(elt->symbols_disabled, parent->symbol.data())) { + msg_err_cache ("conflict in %s: cannot enable disabled symbol %s, " + "wanted to enable symbol %s", + elt->name, parent->symbol.data(), sym); + continue; } + + parent->exec_only_ids.add_id(id, static_pool); + msg_debug_cache ("allow just execution of symbol %s for settings %ud (%s)", + parent->symbol.data(), id, elt->name); } - /* Ignore ghosts */ } item->allowed_ids.add_id(id, static_pool); diff --git a/src/libserver/symcache/symcache_runtime.cxx b/src/libserver/symcache/symcache_runtime.cxx index 7ee8b9cd9..1e334230b 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; |