]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Ignore duplicates in director_servers setting.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 27 Sep 2016 17:21:55 +0000 (20:21 +0300)
committerGitLab <gitlab@git.dovecot.net>
Fri, 30 Sep 2016 11:52:11 +0000 (14:52 +0300)
src/director/director-host.c

index f8fb2cbebbc8e8f665ce42fbcc86bfcf5f7ca89f..945adb938381973022b9259ea9563fbdb47f53f4 100644 (file)
@@ -28,6 +28,8 @@ director_host_add(struct director *dir,
 {
        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 @@ static void director_host_add_string(struct director *dir, const char *host)
        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)