diff --git a/src/director/director-connection.c b/src/director/director-connection.c index bce5b76c4e..7cddc094f9 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -1012,8 +1012,10 @@ director_cmd_host_int(struct director_connection *conn, const char *const *args, } if (update) { - mail_host_set_down(host, down, last_updown_change); - mail_host_set_vhost_count(host, vhost_count); + const char *log_prefix = t_strdup_printf("director(%s): ", + conn->name); + mail_host_set_down(host, down, last_updown_change, log_prefix); + mail_host_set_vhost_count(host, vhost_count, log_prefix); director_update_host(conn->dir, src_host, dir_host, host); } else { dir_debug("Ignoring host %s update vhost_count=%u " diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index a30fa6a33f..54fd5e0c8b 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -305,7 +305,7 @@ doveadm_cmd_host_set_or_update(struct doveadm_connection *conn, return 1; } if (vhost_count != UINT_MAX) - mail_host_set_vhost_count(host, vhost_count); + mail_host_set_vhost_count(host, vhost_count, "doveadm: "); /* NOTE: we don't support changing a tag for an existing host. it needs to be removed first. otherwise it would be a bit ugly to handle. */ @@ -352,7 +352,7 @@ doveadm_cmd_host_updown(struct doveadm_connection *conn, bool down, "host is already being updated - try again later\n"); return 1; } else { - mail_host_set_down(host, down, ioloop_time); + mail_host_set_down(host, down, ioloop_time, "doveadm: "); director_update_host(conn->dir, conn->dir->self_host, NULL, host); } diff --git a/src/director/mail-host.c b/src/director/mail-host.c index 012bad5fdc..e769d50c97 100644 --- a/src/director/mail-host.c +++ b/src/director/mail-host.c @@ -356,17 +356,29 @@ void mail_host_set_tag(struct mail_host *host, const char *tag_name) host->list->vhosts_unsorted = TRUE; } -void mail_host_set_down(struct mail_host *host, bool down, time_t timestamp) +void mail_host_set_down(struct mail_host *host, bool down, + time_t timestamp, const char *log_prefix) { if (host->down != down) { + const char *updown = down ? "down" : "up"; + i_info("%sHost %s changed %s " + "(vhost_count=%u last_updown_change=%ld)", + log_prefix, net_ip2addr(&host->ip), updown, + host->vhost_count, (long)host->last_updown_change); + host->down = down; host->last_updown_change = timestamp; host->list->vhosts_unsorted = TRUE; } } -void mail_host_set_vhost_count(struct mail_host *host, unsigned int vhost_count) +void mail_host_set_vhost_count(struct mail_host *host, unsigned int vhost_count, + const char *log_prefix) { + i_info("%sHost %s vhost count changed from %u to %u", + log_prefix, net_ip2addr(&host->ip), + host->vhost_count, vhost_count); + host->vhost_count = vhost_count; host->list->vhosts_unsorted = TRUE; } diff --git a/src/director/mail-host.h b/src/director/mail-host.h index 002c11d8da..cee7857892 100644 --- a/src/director/mail-host.h +++ b/src/director/mail-host.h @@ -57,9 +57,10 @@ int mail_hosts_parse_and_add(struct mail_host_list *list, const char *hosts_string); const char *mail_host_get_tag(const struct mail_host *host); void mail_host_set_tag(struct mail_host *host, const char *tag_name); -void mail_host_set_down(struct mail_host *host, bool down, time_t timestamp); -void mail_host_set_vhost_count(struct mail_host *host, - unsigned int vhost_count); +void mail_host_set_down(struct mail_host *host, bool down, time_t timestamp, + const char *log_prefix); +void mail_host_set_vhost_count(struct mail_host *host, unsigned int vhost_count, + const char *log_prefix); void mail_host_remove(struct mail_host *host); void mail_hosts_set_synced(struct mail_host_list *list);