diff --git a/src/director/director-connection.c b/src/director/director-connection.c index ac48f944bd..2fde0b8b9d 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -744,6 +744,7 @@ static bool director_cmd_director(struct director_connection *conn, struct director_host *host; struct ip_addr ip; in_port_t port; + bool log_add = FALSE; if (!director_args_parse_ip_port(conn, args, &ip, &port)) return FALSE; @@ -767,6 +768,7 @@ static bool director_cmd_director(struct director_connection *conn, } else { /* save the director and forward it */ host = director_host_add(conn->dir, &ip, port); + log_add = TRUE; } /* just forward this to the entire ring until it reaches back to itself. some hosts may see this twice, but that's the only way to @@ -782,7 +784,7 @@ static bool director_cmd_director(struct director_connection *conn, "Not forwarding it since it's probably crashed."); } else { director_notify_ring_added(host, - director_connection_get_host(conn)); + director_connection_get_host(conn), log_add); } return TRUE; } diff --git a/src/director/director.c b/src/director/director.c index 59c849a986..0d31003e5e 100644 --- a/src/director/director.c +++ b/src/director/director.c @@ -479,10 +479,15 @@ void director_sync_thaw(struct director *dir) } void director_notify_ring_added(struct director_host *added_host, - struct director_host *src) + struct director_host *src, bool log) { const char *cmd; + if (log) { + i_info("Adding director %s to ring (requested by %s)", + added_host->name, src->name); + } + added_host->dir->ring_change_counter++; cmd = t_strdup_printf("DIRECTOR\t%s\t%u\n", net_ip2addr(&added_host->ip), added_host->port); @@ -516,6 +521,9 @@ void director_ring_remove(struct director_host *removed_host, unsigned int i, count; const char *cmd; + i_info("Removing director %s from ring (requested by %s)", + removed_host->name, src->name); + if (removed_host->self) { /* others will just disconnect us */ return; diff --git a/src/director/director.h b/src/director/director.h index 744aaba180..4979d40f01 100644 --- a/src/director/director.h +++ b/src/director/director.h @@ -181,7 +181,7 @@ void director_sync_send(struct director *dir, struct director_host *host, bool director_resend_sync(struct director *dir); void director_notify_ring_added(struct director_host *added_host, - struct director_host *src); + struct director_host *src, bool log); void director_ring_remove(struct director_host *removed_host, struct director_host *src); diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index 7d88ca9689..3c2f009409 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -261,7 +261,7 @@ doveadm_cmd_director_add(struct doveadm_connection *conn, if (director_host_lookup(conn->dir, &ip, port) == NULL) { host = director_host_add(conn->dir, &ip, port); - director_notify_ring_added(host, conn->dir->self_host); + director_notify_ring_added(host, conn->dir->self_host, TRUE); } o_stream_nsend(conn->output, "OK\n", 3); return DOVEADM_DIRECTOR_CMD_RET_OK;