commit 0b05962: [Minor] Reduce race condition probability
Vsevolod Stakhov
vsevolod at highsecure.ru
Mon Sep 2 12:21:04 UTC 2019
Author: Vsevolod Stakhov
Date: 2019-09-02 13:18:33 +0100
URL: https://github.com/rspamd/rspamd/commit/0b059629d7bb65c8ab4101c4b8d50156c03716d7 (HEAD -> master)
[Minor] Reduce race condition probability
---
src/libserver/rspamd_control.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/libserver/rspamd_control.c b/src/libserver/rspamd_control.c
index 59d1e4234..6c558629c 100644
--- a/src/libserver/rspamd_control.c
+++ b/src/libserver/rspamd_control.c
@@ -35,6 +35,7 @@ struct rspamd_control_session;
struct rspamd_control_reply_elt {
struct rspamd_control_reply reply;
struct rspamd_io_ev ev;
+ struct ev_loop *event_loop;
struct rspamd_worker *wrk;
gpointer ud;
gint attached_fd;
@@ -428,9 +429,9 @@ rspamd_control_broadcast_cmd (struct rspamd_main *rspamd_main,
r = sendmsg (wrk->control_pipe[0], &msg, 0);
if (r == sizeof (*cmd)) {
-
rep_elt = g_malloc0 (sizeof (*rep_elt));
rep_elt->wrk = wrk;
+ rep_elt->event_loop = rspamd_main->event_loop;
rep_elt->ud = ud;
rspamd_ev_watcher_init (&rep_elt->ev,
wrk->control_pipe[0],
@@ -720,7 +721,7 @@ struct rspamd_srv_reply_data {
};
static void
-rspamd_control_hs_io_handler (int fd, short what, void *ud)
+rspamd_control_ignore_io_handler (int fd, short what, void *ud)
{
struct rspamd_control_reply_elt *elt =
(struct rspamd_control_reply_elt *)ud;
@@ -728,7 +729,7 @@ rspamd_control_hs_io_handler (int fd, short what, void *ud)
/* At this point we just ignore replies from the workers */
(void)read (fd, &rep, sizeof (rep));
- rspamd_ev_watcher_stop (elt->wrk->srv->event_loop, &elt->ev);
+ rspamd_ev_watcher_stop (elt->event_loop, &elt->ev);
g_free (elt);
}
@@ -741,7 +742,7 @@ rspamd_control_log_pipe_io_handler (int fd, short what, void *ud)
/* At this point we just ignore replies from the workers */
(void) read (fd, &rep, sizeof (rep));
- rspamd_ev_watcher_stop (elt->wrk->srv->event_loop, &elt->ev);
+ rspamd_ev_watcher_stop (elt->event_loop, &elt->ev);
g_free (elt);
}
@@ -886,7 +887,7 @@ rspamd_srv_handler (EV_P_ ev_io *w, int revents)
sizeof (wcmd.cmd.hs_loaded.cache_dir));
wcmd.cmd.hs_loaded.forced = cmd.cmd.hs_loaded.forced;
rspamd_control_broadcast_cmd (srv, &wcmd, rfd,
- rspamd_control_hs_io_handler, NULL);
+ rspamd_control_ignore_io_handler, NULL);
break;
case RSPAMD_SRV_MONITORED_CHANGE:
/* Broadcast command to all workers */
@@ -898,7 +899,7 @@ rspamd_srv_handler (EV_P_ ev_io *w, int revents)
wcmd.cmd.monitored_change.alive = cmd.cmd.monitored_change.alive;
wcmd.cmd.monitored_change.sender = cmd.cmd.monitored_change.sender;
rspamd_control_broadcast_cmd (srv, &wcmd, rfd,
- rspamd_control_hs_io_handler, NULL);
+ rspamd_control_ignore_io_handler, NULL);
break;
case RSPAMD_SRV_LOG_PIPE:
memset (&wcmd, 0, sizeof (wcmd));
More information about the Commits
mailing list