]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Rework] Run post-loads when all initialization is completed
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 24 Jul 2017 07:13:45 +0000 (08:13 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 24 Jul 2017 07:13:45 +0000 (08:13 +0100)
src/controller.c
src/fuzzy_storage.c
src/hs_helper.c
src/libserver/worker_util.c
src/libserver/worker_util.h
src/log_helper.c
src/lua_worker.c
src/rspamd_proxy.c
src/worker.c

index 2f6fef71648afe6da1d21de9967fd37b73cde91c..e3f4c5d3afbc85065b0a48ca441fde791392e39d 100644 (file)
@@ -3605,8 +3605,7 @@ start_controller_worker (struct rspamd_worker *worker)
 
        ctx->ev_base = rspamd_prepare_worker (worker,
                        "controller",
-                       rspamd_controller_accept_socket,
-                       TRUE);
+                       rspamd_controller_accept_socket);
        msec_to_tv (ctx->timeout, &ctx->io_tv);
 
        ctx->start_time = time (NULL);
@@ -3802,6 +3801,9 @@ start_controller_worker (struct rspamd_worker *worker)
                rspamd_map_watch (worker->srv->cfg, ctx->ev_base, ctx->resolver, FALSE);
        }
 
+       rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base, worker);
+
+       /* Start event loop */
        event_base_loop (ctx->ev_base, 0);
        rspamd_worker_block_signals ();
 
index 41f734593b3fbca708bfdd2e7176dad06413254e..47b76fb9ba7b205582f1ea946f51e57c4f23f8e0 100644 (file)
@@ -2713,8 +2713,7 @@ start_fuzzy (struct rspamd_worker *worker)
 
        ctx->ev_base = rspamd_prepare_worker (worker,
                        "fuzzy",
-                       NULL,
-                       FALSE);
+                       NULL);
        ctx->peer_fd = -1;
        ctx->worker = worker;
        ctx->cfg = worker->srv->cfg;
index 0031f029dde6570ce4431eb6f093aee50680653f..8e63469b108f24ffdde05e1b2fb3a16f9d6dc095 100644 (file)
@@ -290,8 +290,7 @@ start_hs_helper (struct rspamd_worker *worker)
 
        ctx->ev_base = rspamd_prepare_worker (worker,
                        "hs_helper",
-                       NULL,
-                       FALSE);
+                       NULL);
 
        if (!rspamd_rs_compile (ctx, worker, FALSE)) {
                /* Tell main not to respawn more workers */
index 9dfb6d5e6068cdb651ec74ff579739b89f9f9674..1fd6c35558d39607ee56bfc54212d80744d44f21 100644 (file)
@@ -257,7 +257,7 @@ rspamd_worker_init_signals (struct rspamd_worker *worker, struct event_base *bas
 
 struct event_base *
 rspamd_prepare_worker (struct rspamd_worker *worker, const char *name,
-       void (*accept_handler)(int, short, void *), gboolean load_lua)
+       void (*accept_handler)(int, short, void *))
 {
        struct event_base *ev_base;
        struct event *accept_events;
@@ -305,12 +305,6 @@ rspamd_prepare_worker (struct rspamd_worker *worker, const char *name,
                }
        }
 
-       if (load_lua) {
-               struct rspamd_config *cfg = worker->srv->cfg;
-
-               rspamd_lua_run_postloads (cfg->lua_state, cfg, ev_base, worker);
-       }
-
        return ev_base;
 }
 
index 1fc4565cb550746687481d7cbf85f3c3e6daa846..d8decbac8313407b838c7455d7993e72be47bdf8 100644 (file)
@@ -40,7 +40,7 @@ struct rspamd_worker_signal_handler;
  */
 struct event_base *
 rspamd_prepare_worker (struct rspamd_worker *worker, const char *name,
-       void (*accept_handler)(int, short, void *), gboolean load_lua);
+       void (*accept_handler)(int, short, void *));
 
 /**
  * Set special signal handler for a worker
index 84e485045b6e85c6edf70761bbe83894f62393ec..9800ab9d3215762c6f30b1aae093d53a7f55c054 100644 (file)
@@ -190,8 +190,7 @@ start_log_helper (struct rspamd_worker *worker)
 
        ctx->ev_base = rspamd_prepare_worker (worker,
                        "log_helper",
-                       NULL,
-                       TRUE);
+                       NULL);
        ctx->cfg = worker->srv->cfg;
        ctx->scripts = worker->cf->scripts;
        ctx->L = ctx->cfg->lua_state;
@@ -222,6 +221,8 @@ start_log_helper (struct rspamd_worker *worker)
        rspamd_srv_send_command (worker, ctx->ev_base, &srv_cmd, ctx->pair[1],
                        rspamd_log_helper_reply_handler, ctx);
        rspamd_mempool_unlock_mutex (worker->srv->start_mtx);
+       rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base,
+                       worker);
        event_base_loop (ctx->ev_base, 0);
        close (ctx->pair[0]);
        rspamd_worker_block_signals ();
index e5733058a3fb911fd61c20b1d7a118ffb51ab79f..d5b651aaf1e67aeb219fa2a04b8391034f88cf21 100644 (file)
@@ -352,8 +352,7 @@ start_lua_worker (struct rspamd_worker *worker)
 
        ctx->ev_base = rspamd_prepare_worker (worker,
                        "lua_worker",
-                       lua_accept_socket,
-                       TRUE);
+                       lua_accept_socket);
 
        L = worker->srv->cfg->lua_state;
        ctx->L = L;
@@ -392,9 +391,8 @@ start_lua_worker (struct rspamd_worker *worker)
                exit (EXIT_SUCCESS);
        }
 
-       /* Maps events */
-       rspamd_map_watch (worker->srv->cfg, ctx->ev_base, ctx->resolver, 0);
-
+       rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base,
+                       worker);
        event_base_loop (ctx->ev_base, 0);
        rspamd_worker_block_signals ();
 
index 7134c4b526534b96af5497839913e9b158ef5144..a2521fec10e768c050046e5af2a7ded4d787f9de 100644 (file)
@@ -2040,8 +2040,7 @@ start_rspamd_proxy (struct rspamd_worker *worker) {
 
        ctx->cfg = worker->srv->cfg;
        ctx->ev_base = rspamd_prepare_worker (worker, "rspamd_proxy",
-                       proxy_accept_socket,
-                       TRUE);
+                       proxy_accept_socket);
 
        ctx->resolver = dns_resolver_init (worker->srv->logger,
                        ctx->ev_base,
@@ -2075,6 +2074,8 @@ start_rspamd_proxy (struct rspamd_worker *worker) {
 
        rspamd_milter_init_library (ctx->spam_header, ctx->sessions_cache,
                        ctx->discard_on_reject);
+       rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base,
+                       worker);
 
        event_base_loop (ctx->ev_base, 0);
        rspamd_worker_block_signals ();
index c6e419e36565e3d6921b6c6c9c29afdb1c37087c..717e5451b6f340949c9744201f58a1a4820c8856 100644 (file)
@@ -671,7 +671,7 @@ start_worker (struct rspamd_worker *worker)
        struct rspamd_worker_ctx *ctx = worker->ctx;
 
        ctx->cfg = worker->srv->cfg;
-       ctx->ev_base = rspamd_prepare_worker (worker, "normal", accept_socket, TRUE);
+       ctx->ev_base = rspamd_prepare_worker (worker, "normal", accept_socket);
        msec_to_tv (ctx->timeout, &ctx->io_tv);
        rspamd_symbols_cache_start_refresh (worker->srv->cfg->cache, ctx->ev_base,
                        worker);
@@ -686,6 +686,8 @@ start_worker (struct rspamd_worker *worker)
        /* XXX: stupid default */
        ctx->keys_cache = rspamd_keypair_cache_new (256);
        rspamd_worker_init_scanner (worker, ctx->ev_base, ctx->resolver);
+       rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base,
+                       worker);
 
        event_base_loop (ctx->ev_base, 0);
        rspamd_worker_block_signals ();