From: Vsevolod Stakhov Date: Tue, 10 Sep 2019 17:02:33 +0000 (+0100) Subject: [Project] Add heartbeat events X-Git-Tag: 2.0~222 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=952850a4741c0e919879da7e16715d59c40eacca;p=thirdparty%2Frspamd.git [Project] Add heartbeat events --- diff --git a/src/libserver/rspamd_control.c b/src/libserver/rspamd_control.c index 6c558629c3..2ebdbc4d62 100644 --- a/src/libserver/rspamd_control.c +++ b/src/libserver/rspamd_control.c @@ -912,6 +912,10 @@ rspamd_srv_handler (EV_P_ ev_io *w, int revents) rdata->rep.reply.on_fork.status = 0; rspamd_control_handle_on_fork (&cmd, srv); break; + case RSPAMD_SRV_HEARTBEAT: + worker->hb.last_event = ev_time (); + rdata->rep.reply.heartbeat.status = 0; + break; default: msg_err ("unknown command type: %d", cmd.type); break; diff --git a/src/libserver/rspamd_control.h b/src/libserver/rspamd_control.h index 08d3946c77..87e5e31869 100644 --- a/src/libserver/rspamd_control.h +++ b/src/libserver/rspamd_control.h @@ -46,6 +46,7 @@ enum rspamd_srv_type { RSPAMD_SRV_MONITORED_CHANGE, RSPAMD_SRV_LOG_PIPE, RSPAMD_SRV_ON_FORK, + RSPAMD_SRV_HEARTBEAT, }; enum rspamd_log_pipe_type { @@ -157,6 +158,10 @@ struct rspamd_srv_command { child_dead, } state; } on_fork; + struct { + guint status; + /* TODO: add more fields */ + } heartbeat; } cmd; }; @@ -179,6 +184,9 @@ struct rspamd_srv_reply { struct { gint status; } on_fork; + struct { + gint status; + } heartbeat; } reply; }; diff --git a/src/libserver/worker_util.c b/src/libserver/worker_util.c index 47812ded1f..56fdd70c18 100644 --- a/src/libserver/worker_util.c +++ b/src/libserver/worker_util.c @@ -692,7 +692,11 @@ static void rspamd_worker_heartbeat_cb (EV_P_ ev_timer *w, int revents) { struct rspamd_worker *wrk = (struct rspamd_worker *)w->data; + struct rspamd_srv_command cmd; + memset (&cmd, 0, sizeof (cmd)); + cmd.type = RSPAMD_SRV_HEARTBEAT; + rspamd_srv_send_command (wrk, EV_A, &cmd, -1, NULL, NULL); } static void