Ver código fonte

[Rework] Run post-loads when all initialization is completed

tags/1.7.0
Vsevolod Stakhov 7 anos atrás
pai
commit
6b71fcb72f

+ 4
- 2
src/controller.c Ver arquivo



ctx->ev_base = rspamd_prepare_worker (worker, ctx->ev_base = rspamd_prepare_worker (worker,
"controller", "controller",
rspamd_controller_accept_socket,
TRUE);
rspamd_controller_accept_socket);
msec_to_tv (ctx->timeout, &ctx->io_tv); msec_to_tv (ctx->timeout, &ctx->io_tv);


ctx->start_time = time (NULL); ctx->start_time = time (NULL);
rspamd_map_watch (worker->srv->cfg, ctx->ev_base, ctx->resolver, FALSE); 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); event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals (); rspamd_worker_block_signals ();



+ 1
- 2
src/fuzzy_storage.c Ver arquivo



ctx->ev_base = rspamd_prepare_worker (worker, ctx->ev_base = rspamd_prepare_worker (worker,
"fuzzy", "fuzzy",
NULL,
FALSE);
NULL);
ctx->peer_fd = -1; ctx->peer_fd = -1;
ctx->worker = worker; ctx->worker = worker;
ctx->cfg = worker->srv->cfg; ctx->cfg = worker->srv->cfg;

+ 1
- 2
src/hs_helper.c Ver arquivo



ctx->ev_base = rspamd_prepare_worker (worker, ctx->ev_base = rspamd_prepare_worker (worker,
"hs_helper", "hs_helper",
NULL,
FALSE);
NULL);


if (!rspamd_rs_compile (ctx, worker, FALSE)) { if (!rspamd_rs_compile (ctx, worker, FALSE)) {
/* Tell main not to respawn more workers */ /* Tell main not to respawn more workers */

+ 1
- 7
src/libserver/worker_util.c Ver arquivo



struct event_base * struct event_base *
rspamd_prepare_worker (struct rspamd_worker *worker, const char *name, 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_base *ev_base;
struct event *accept_events; struct event *accept_events;
} }
} }


if (load_lua) {
struct rspamd_config *cfg = worker->srv->cfg;

rspamd_lua_run_postloads (cfg->lua_state, cfg, ev_base, worker);
}

return ev_base; return ev_base;
} }



+ 1
- 1
src/libserver/worker_util.h Ver arquivo

*/ */
struct event_base * struct event_base *
rspamd_prepare_worker (struct rspamd_worker *worker, const char *name, 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 * Set special signal handler for a worker

+ 3
- 2
src/log_helper.c Ver arquivo



ctx->ev_base = rspamd_prepare_worker (worker, ctx->ev_base = rspamd_prepare_worker (worker,
"log_helper", "log_helper",
NULL,
TRUE);
NULL);
ctx->cfg = worker->srv->cfg; ctx->cfg = worker->srv->cfg;
ctx->scripts = worker->cf->scripts; ctx->scripts = worker->cf->scripts;
ctx->L = ctx->cfg->lua_state; ctx->L = ctx->cfg->lua_state;
rspamd_srv_send_command (worker, ctx->ev_base, &srv_cmd, ctx->pair[1], rspamd_srv_send_command (worker, ctx->ev_base, &srv_cmd, ctx->pair[1],
rspamd_log_helper_reply_handler, ctx); rspamd_log_helper_reply_handler, ctx);
rspamd_mempool_unlock_mutex (worker->srv->start_mtx); 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); event_base_loop (ctx->ev_base, 0);
close (ctx->pair[0]); close (ctx->pair[0]);
rspamd_worker_block_signals (); rspamd_worker_block_signals ();

+ 3
- 5
src/lua_worker.c Ver arquivo



ctx->ev_base = rspamd_prepare_worker (worker, ctx->ev_base = rspamd_prepare_worker (worker,
"lua_worker", "lua_worker",
lua_accept_socket,
TRUE);
lua_accept_socket);


L = worker->srv->cfg->lua_state; L = worker->srv->cfg->lua_state;
ctx->L = L; ctx->L = L;
exit (EXIT_SUCCESS); 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); event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals (); rspamd_worker_block_signals ();



+ 3
- 2
src/rspamd_proxy.c Ver arquivo



ctx->cfg = worker->srv->cfg; ctx->cfg = worker->srv->cfg;
ctx->ev_base = rspamd_prepare_worker (worker, "rspamd_proxy", 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->resolver = dns_resolver_init (worker->srv->logger,
ctx->ev_base, ctx->ev_base,


rspamd_milter_init_library (ctx->spam_header, ctx->sessions_cache, rspamd_milter_init_library (ctx->spam_header, ctx->sessions_cache,
ctx->discard_on_reject); 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); event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals (); rspamd_worker_block_signals ();

+ 3
- 1
src/worker.c Ver arquivo

struct rspamd_worker_ctx *ctx = worker->ctx; struct rspamd_worker_ctx *ctx = worker->ctx;


ctx->cfg = worker->srv->cfg; 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); msec_to_tv (ctx->timeout, &ctx->io_tv);
rspamd_symbols_cache_start_refresh (worker->srv->cfg->cache, ctx->ev_base, rspamd_symbols_cache_start_refresh (worker->srv->cfg->cache, ctx->ev_base,
worker); worker);
/* XXX: stupid default */ /* XXX: stupid default */
ctx->keys_cache = rspamd_keypair_cache_new (256); ctx->keys_cache = rspamd_keypair_cache_new (256);
rspamd_worker_init_scanner (worker, ctx->ev_base, ctx->resolver); 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); event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals (); rspamd_worker_block_signals ();

Carregando…
Cancelar
Salvar