changeset 20807:9c0efffeb1f3

director: Ignore duplicates in director_servers setting.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 27 Sep 2016 20:21:55 +0300
parents 096e9dea4145
children 93ab8e7c6081
files src/director/director-host.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/director/director-host.c	Fri Sep 30 12:36:33 2016 +0300
+++ b/src/director/director-host.c	Tue Sep 27 20:21:55 2016 +0300
@@ -28,6 +28,8 @@
 {
 	struct director_host *host;
 
+	i_assert(director_host_lookup(dir, ip, port) == NULL);
+
 	host = i_new(struct director_host, 1);
 	host->dir = dir;
 	host->refcount = 1;
@@ -159,8 +161,10 @@
 	if (net_gethostbyname(host, &ips, &ips_count) < 0)
 		i_fatal("Unknown director host: %s", host);
 
-	for (i = 0; i < ips_count; i++)
-		(void)director_host_add(dir, &ips[i], port);
+	for (i = 0; i < ips_count; i++) {
+		if (director_host_lookup(dir, &ips[i], port) == NULL)
+			(void)director_host_add(dir, &ips[i], port);
+	}
 }
 
 void director_host_add_from_string(struct director *dir, const char *hosts)