]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] worker_util: add hyperscan handlers to controller
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 1 Feb 2026 16:00:05 +0000 (16:00 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 1 Feb 2026 16:00:05 +0000 (16:00 +0000)
Controller was missing hyperscan/multipattern/regexp_map hot-swap
handlers, causing it to stay on ACISM fallback while normal workers
switched to hyperscan.

src/libserver/worker_util.c

index cbc9107af67daf35c5468cae89a6bc39a8fc81a9..6236e7914d84116b17f4f82cd2e7f9b68773fa71 100644 (file)
@@ -2540,6 +2540,22 @@ void rspamd_worker_init_controller(struct rspamd_worker *worker,
        ctx = (struct rspamd_abstract_worker_ctx *) worker->ctx;
        rspamd_controller_load_saved_stats(worker->srv, worker->srv->cfg);
 
+#ifdef WITH_HYPERSCAN
+       /* Controller also needs hyperscan handlers for hot-swap support */
+       rspamd_control_worker_add_cmd_handler(worker,
+                                                                                 RSPAMD_CONTROL_HYPERSCAN_LOADED,
+                                                                                 rspamd_worker_hyperscan_ready,
+                                                                                 NULL);
+       rspamd_control_worker_add_cmd_handler(worker,
+                                                                                 RSPAMD_CONTROL_MULTIPATTERN_LOADED,
+                                                                                 rspamd_worker_multipattern_ready,
+                                                                                 NULL);
+       rspamd_control_worker_add_cmd_handler(worker,
+                                                                                 RSPAMD_CONTROL_REGEXP_MAP_LOADED,
+                                                                                 rspamd_worker_regexp_map_ready,
+                                                                                 NULL);
+#endif
+
        if (worker->index == 0) {
                /* Enable periodics and other stuff */
                static struct rspamd_controller_periodics_cbdata cbd;