diff options
Diffstat (limited to 'mail/rspamd/files/patch-src_libserver_re_cache.c')
-rw-r--r-- | mail/rspamd/files/patch-src_libserver_re_cache.c | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/mail/rspamd/files/patch-src_libserver_re_cache.c b/mail/rspamd/files/patch-src_libserver_re_cache.c new file mode 100644 index 000000000000..ce6ab71ea699 --- /dev/null +++ b/mail/rspamd/files/patch-src_libserver_re_cache.c @@ -0,0 +1,131 @@ +From 98e731bf69306a830834fbcfa7a21c3357130693 Mon Sep 17 00:00:00 2001 +From: Vsevolod Stakhov <vsevolod@rspamd.com> +Date: Thu, 18 Sep 2025 10:03:39 +0100 +Subject: [PATCH] [Minor] Fix non-hyperscan build + +Issue: #5620 +--- + src/libserver/re_cache.c | 29 +++++++++++++++++++++-------- + 1 file changed, 21 insertions(+), 8 deletions(-) + +diff --git src/libserver/re_cache.c src/libserver/re_cache.c +index fc056ecd8..2aa93e0d3 100644 +--- src/libserver/re_cache.c ++++ src/libserver/re_cache.c +@@ -899,7 +899,6 @@ rspamd_re_cache_hyperscan_cb(unsigned int id, + } + else { + if (!isset(rt->checked, id)) { +- + processed = 0; + + for (i = 0; i < cbdata->count; i++) { +@@ -933,7 +932,6 @@ rspamd_re_cache_process_regexp_data(struct rspamd_re_runtime *rt, + gboolean is_raw, + gboolean *processed_hyperscan) + { +- + uint64_t re_id; + unsigned int ret = 0; + unsigned int i; +@@ -1268,7 +1266,6 @@ rspamd_re_cache_process_headers_list(struct rspamd_task *task, + + DL_FOREACH(rh, cur) + { +- + if (is_strong && strcmp(cur->name, re_class->type_data) != 0) { + /* Skip a different case */ + continue; +@@ -1669,7 +1666,6 @@ rspamd_re_cache_exec_re(struct rspamd_task *task, + re_class->type_data, + (unsigned char ***) &scvec, + &lenvec, &cnt)) { +- + ret = rspamd_re_cache_process_regexp_data(rt, re, + task, scvec, lenvec, cnt, raw, &processed_hyperscan); + msg_debug_re_task("checked selector(%s) regexp: %s -> %d", +@@ -2080,7 +2076,6 @@ rspamd_re_cache_is_finite(struct rspamd_re_cache *cache, + &cache->plt, + &test_db, + &hs_errors) != HS_SUCCESS) { +- + msg_info_re_cache("cannot compile (prefilter mode) '%s' to hyperscan: '%s'", + pat, + hs_errors != NULL ? hs_errors->message : "unknown error"); +@@ -2146,7 +2141,9 @@ struct rspamd_re_cache_hs_compile_cbdata { + double max_time; + gboolean silent; + unsigned int total; ++ + void (*cb)(unsigned int ncompiled, GError *err, void *cbd); ++ + void *cbd; + }; + +@@ -2210,7 +2207,6 @@ rspamd_re_cache_compile_timer_cb(EV_P_ ev_timer *w, int revents) + G_DIR_SEPARATOR, re_class->hash); + + if (rspamd_re_cache_is_valid_hyperscan_file(cache, path, TRUE, TRUE, NULL)) { +- + fd = open(path, O_RDONLY, 00600); + + /* Read number of regexps */ +@@ -2376,7 +2372,6 @@ rspamd_re_cache_compile_timer_cb(EV_P_ ev_timer *w, int revents) + &cache->plt, + &test_db, + &hs_errors) != HS_SUCCESS) { +- + err = g_error_new(rspamd_re_cache_quark(), EINVAL, + "cannot create tree of regexp when processing '%s': %s", + hs_pats[hs_errors->expression], hs_errors->message); +@@ -2560,7 +2555,9 @@ struct rspamd_re_cache_scoped_compile_data { + unsigned int completed_scopes; + unsigned int total_compiled; + GError *first_error; ++ + void (*final_cb)(unsigned int ncompiled, GError *err, void *cbd); ++ + void *final_cbd; + }; + +@@ -3435,7 +3432,9 @@ struct rspamd_re_cache_hs_compile_scoped_cbdata { + double max_time; + gboolean silent; + int lock_fd; ++ + void (*cb)(const char *scope, unsigned int ncompiled, GError *err, void *cbd); ++ + void *cbd; + }; + +@@ -3463,7 +3462,8 @@ int rspamd_re_cache_compile_hyperscan_scoped_single(struct rspamd_re_cache *cach + double max_time, + gboolean silent, + struct ev_loop *event_loop, +- void (*cb)(const char *scope, unsigned int ncompiled, GError *err, void *cbd), ++ void (*cb)(const char *scope, unsigned int ncompiled, GError *err, ++ void *cbd), + void *cbd) + { + struct rspamd_re_cache_hs_compile_scoped_cbdata *scoped_cbd; +@@ -3495,4 +3495,17 @@ int rspamd_re_cache_compile_hyperscan_scoped_single(struct rspamd_re_cache *cach + return rspamd_re_cache_compile_hyperscan(cache, cache_dir, max_time, silent, + event_loop, rspamd_re_cache_compile_scoped_cb, scoped_cbd); + } ++#else ++/* Non hyperscan version stub */ ++int rspamd_re_cache_compile_hyperscan_scoped_single(struct rspamd_re_cache *cache, ++ const char *scope, ++ const char *cache_dir, ++ double max_time, ++ gboolean silent, ++ struct ev_loop *event_loop, ++ void (*cb)(const char *scope, unsigned int ncompiled, GError *err, void *cbd), ++ void *cbd) ++{ ++ return 0; ++} + #endif +-- +2.51.0 + |