Browse Source

[Minor] Prevent data corruption when dealing with signals

tags/1.7.0
Vsevolod Stakhov 6 years ago
parent
commit
2f0c6e0f26

+ 0
- 1
src/fuzzy_storage.c View File

@@ -2869,7 +2869,6 @@ start_fuzzy (struct rspamd_worker *worker)
/* Get peer pipe */
memset (&srv_cmd, 0, sizeof (srv_cmd));
srv_cmd.type = RSPAMD_SRV_SOCKETPAIR;
srv_cmd.id = ottery_rand_uint64 ();
srv_cmd.cmd.spair.af = SOCK_DGRAM;
srv_cmd.cmd.spair.pair_num = worker->index;
memset (srv_cmd.cmd.spair.pair_id, 0, sizeof (srv_cmd.cmd.spair.pair_id));

+ 1
- 0
src/hs_helper.c View File

@@ -220,6 +220,7 @@ rspamd_rs_compile (struct hs_helper_ctx *ctx, struct rspamd_worker *worker,
ctx->loaded = TRUE;
}

memset (&srv_cmd, 0, sizeof (srv_cmd));
srv_cmd.type = RSPAMD_SRV_HYPERSCAN_LOADED;
rspamd_strlcpy (srv_cmd.cmd.hs_loaded.cache_dir, ctx->hs_dir,
sizeof (srv_cmd.cmd.hs_loaded.cache_dir));

+ 1
- 0
src/libserver/rspamd_control.c View File

@@ -1079,6 +1079,7 @@ rspamd_srv_send_command (struct rspamd_worker *worker,
g_assert (worker != NULL);

rd = g_slice_alloc0 (sizeof (*rd));
cmd->id = ottery_rand_uint64 ();
memcpy (&rd->cmd, cmd, sizeof (rd->cmd));
rd->handler = handler;
rd->ud = ud;

+ 6
- 1
src/libserver/worker_util.c View File

@@ -338,19 +338,23 @@ rspamd_worker_stop_accept (struct rspamd_worker *worker)
if (worker->accept_events != NULL) {
g_list_free (worker->accept_events);
}

/* XXX: we need to do it much later */
#if 0
g_hash_table_iter_init (&it, worker->signal_events);

while (g_hash_table_iter_next (&it, &k, &v)) {
sigh = (struct rspamd_worker_signal_handler *)v;
g_hash_table_iter_steal (&it);

if (sigh->enabled) {
event_del (&sigh->ev);
}

g_free (sigh);
}

g_hash_table_unref (worker->signal_events);
#endif

/* Cleanup maps */
for (cur = worker->srv->cfg->maps; cur != NULL; cur = g_list_next (cur)) {
@@ -820,6 +824,7 @@ rspamd_worker_monitored_on_change (struct rspamd_monitored_ctx *ctx,

rspamd_monitored_get_tag (m, tag);
ev_base = rspamd_monitored_ctx_get_ev_base (ctx);
memset (&srv_cmd, 0, sizeof (srv_cmd));
srv_cmd.type = RSPAMD_SRV_MONITORED_CHANGE;
rspamd_strlcpy (srv_cmd.cmd.monitored_change.tag, tag,
sizeof (srv_cmd.cmd.monitored_change.tag));

+ 1
- 0
src/log_helper.c View File

@@ -212,6 +212,7 @@ start_log_helper (struct rspamd_worker *worker)
exit (EXIT_SUCCESS);
}

memset (&srv_cmd, 0, sizeof (srv_cmd));
srv_cmd.type = RSPAMD_SRV_LOG_PIPE;
srv_cmd.cmd.log_pipe.type = RSPAMD_LOG_PIPE_SYMBOLS;


+ 2
- 0
src/lua/lua_common.c View File

@@ -1478,6 +1478,7 @@ rspamd_lua_cld_handler (struct rspamd_worker_signal_handler *sigh, void *ud)
g_free (cbdata);

/* Notify main */
memset (&srv_cmd, 0, sizeof (srv_cmd));
srv_cmd.type = RSPAMD_SRV_ON_FORK;
srv_cmd.cmd.on_fork.state = child_dead;
srv_cmd.cmd.on_fork.cpid = cbdata->cpid;
@@ -1679,6 +1680,7 @@ lua_worker_spawn_process (lua_State *L)
cbdata->cpid = pid;
cbdata->io_buf = g_string_sized_new (8);
/* Notify main */
memset (&srv_cmd, 0, sizeof (srv_cmd));
srv_cmd.type = RSPAMD_SRV_ON_FORK;
srv_cmd.cmd.on_fork.state = child_create;
srv_cmd.cmd.on_fork.cpid = pid;

Loading…
Cancel
Save