Browse Source

[Minor] Further fixes to the monitored logic

tags/1.6.2
Vsevolod Stakhov 7 years ago
parent
commit
e902637bcc
4 changed files with 20 additions and 14 deletions
  1. 1
    0
      src/libserver/rspamd_control.c
  2. 2
    0
      src/libserver/rspamd_control.h
  3. 1
    0
      src/libserver/worker_util.c
  4. 16
    14
      src/worker.c

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

@@ -823,6 +823,7 @@ rspamd_srv_handler (gint fd, short what, gpointer ud)
cmd.cmd.monitored_change.tag,
sizeof (wcmd.cmd.monitored_change.tag));
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);
break;

+ 2
- 0
src/libserver/rspamd_control.h View File

@@ -69,6 +69,7 @@ struct rspamd_control_command {
struct {
gchar tag[32];
gboolean alive;
pid_t sender;
} monitored_change;
struct {
enum rspamd_log_pipe_type type;
@@ -138,6 +139,7 @@ struct rspamd_srv_command {
struct {
gchar tag[32];
gboolean alive;
pid_t sender;
} monitored_change;
struct {
enum rspamd_log_pipe_type type;

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

@@ -821,6 +821,7 @@ rspamd_worker_monitored_on_change (struct rspamd_monitored_ctx *ctx,
rspamd_strlcpy (srv_cmd.cmd.monitored_change.tag, tag,
sizeof (srv_cmd.cmd.monitored_change.tag));
srv_cmd.cmd.monitored_change.alive = alive;
srv_cmd.cmd.monitored_change.sender = getpid ();
msg_info_config ("broadcast monitored update for %s: %s",
srv_cmd.cmd.monitored_change.tag, alive ? "alive" : "dead");


+ 16
- 14
src/worker.c View File

@@ -498,23 +498,25 @@ rspamd_worker_monitored_handler (struct rspamd_main *rspamd_main,
struct rspamd_control_reply rep;
struct rspamd_monitored *m;
struct rspamd_monitored_ctx *mctx = worker->srv->cfg->monitored_ctx;
struct rspamd_config *cfg = worker->srv->cfg;
struct rspamd_config *cfg = ud;

memset (&rep, 0, sizeof (rep));
rep.type = RSPAMD_CONTROL_MONITORED_CHANGE;
m = rspamd_monitored_by_tag (mctx, cmd->cmd.monitored_change.tag);

if (!m) {
rspamd_monitored_set_alive (m, cmd->cmd.monitored_change.alive);
rep.reply.monitored_change.status = 1;
msg_info_config ("updated monitored status for %s: %s",
cmd->cmd.monitored_change.tag,
cmd->cmd.monitored_change.alive ? "alive" : "dead");
}
else {
msg_err ("cannot find monitored by tag: %*s", 32,
cmd->cmd.monitored_change.tag);
rep.reply.monitored_change.status = 0;

if (cmd->cmd.monitored_change.sender != getpid ()) {
m = rspamd_monitored_by_tag (mctx, cmd->cmd.monitored_change.tag);

if (m != NULL) {
rspamd_monitored_set_alive (m, cmd->cmd.monitored_change.alive);
rep.reply.monitored_change.status = 1;
msg_info_config ("updated monitored status for %s: %s",
cmd->cmd.monitored_change.tag,
cmd->cmd.monitored_change.alive ? "alive" : "dead");
} else {
msg_err ("cannot find monitored by tag: %*s", 32,
cmd->cmd.monitored_change.tag);
rep.reply.monitored_change.status = 0;
}
}

if (write (fd, &rep, sizeof (rep)) != sizeof (rep)) {

Loading…
Cancel
Save