const cache_item *max_elt = nullptr;
for (const auto &it : vec) {
if (it->priority != saved_priority && max_elt != nullptr && max_timeout > 0) {
- accumulated_timeout += max_timeout;
- added_timeout += max_timeout;
- msg_debug_cache_lambda("added %.2f to the timeout (%.2f) as the priority has changed (%d -> %d);"
- "symbol: %s",
- max_timeout, accumulated_timeout, saved_priority, it->priority,
- it->symbol.c_str());
if (!seen_items.contains(max_elt)) {
+ accumulated_timeout += max_timeout;
+ added_timeout += max_timeout;
+
+ msg_debug_cache_lambda("added %.2f to the timeout (%.2f) as the priority has changed (%d -> %d); "
+ "symbol: %s",
+ max_timeout, accumulated_timeout, saved_priority, it->priority,
+ max_elt->symbol.c_str());
elts.emplace_back(max_timeout, max_elt);
seen_items.insert(max_elt);
}
}
if (max_elt != nullptr && max_timeout > 0) {
- accumulated_timeout += max_timeout;
- added_timeout += max_timeout;
if (!seen_items.contains(max_elt)) {
+ accumulated_timeout += max_timeout;
+ added_timeout += max_timeout;
+
+ msg_debug_cache_lambda("added %.2f to the timeout (%.2f) end of processing; "
+ "symbol: %s",
+ max_timeout, accumulated_timeout,
+ max_elt->symbol.c_str());
elts.emplace_back(max_timeout, max_elt);
seen_items.insert(max_elt);
}
};
auto prefilters_timeout = pre_postfilter_iter(this->prefilters);
- auto postfilters_timeout = pre_postfilter_iter(this->postfilters);
- auto idempotent_timeout = pre_postfilter_iter(this->idempotent);
/* For normal filters, we check the maximum chain of the dependencies
* This function might have O(N^2) complexity if all symbols are in a single
}
accumulated_timeout += max_filters_timeout;
+
+ auto postfilters_timeout = pre_postfilter_iter(this->postfilters);
+ auto idempotent_timeout = pre_postfilter_iter(this->idempotent);
+
/* Sort in decreasing order by timeout */
std::stable_sort(std::begin(elts), std::end(elts),
[](const auto &p1, const auto &p2) {
local id = rspamd_config:register_symbol{
name = 'URL_REDIRECTOR_CHECK',
type = 'callback,prefilter',
+ priority = lua_util.symbols_priorities.medium,
callback = url_redirector_handler,
-- In fact, the real timeout is nested_limit * timeout...
augmentations = {string.format("timeout=%f", settings.timeout)}