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;
RSPAMD_SRV_MONITORED_CHANGE,
RSPAMD_SRV_LOG_PIPE,
RSPAMD_SRV_ON_FORK,
+ RSPAMD_SRV_HEARTBEAT,
};
enum rspamd_log_pipe_type {
child_dead,
} state;
} on_fork;
+ struct {
+ guint status;
+ /* TODO: add more fields */
+ } heartbeat;
} cmd;
};
struct {
gint status;
} on_fork;
+ struct {
+ gint status;
+ } heartbeat;
} reply;
};
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