]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: With director_consistent_hashing=yes hosts_hash wasn't always calculated...
authorTimo Sirainen <tss@iki.fi>
Mon, 23 Nov 2015 17:35:03 +0000 (19:35 +0200)
committerTimo Sirainen <tss@iki.fi>
Mon, 23 Nov 2015 17:35:03 +0000 (19:35 +0200)
If different servers had added hosts in different order, the hosts_hash
would have become different, which caused errors and resyncs.

src/director/mail-host.c

index 5343e10231cc8157aea8e3c0e5cbb65cddc07e8b..eb573efca784b42fd2940141d9e063069c774574 100644 (file)
@@ -99,8 +99,6 @@ static void mail_hosts_sort_direct(struct mail_host_list *list)
        struct mail_host *const *hostp;
        unsigned int i;
 
-       array_sort(&list->hosts, mail_host_cmp);
-
        /* rebuild vhosts */
        array_clear(&list->vhosts);
        array_foreach(&list->hosts, hostp) {
@@ -119,6 +117,8 @@ static void mail_hosts_sort(struct mail_host_list *list)
        struct mail_host *const *hostp;
        uint32_t num;
 
+       array_sort(&list->hosts, mail_host_cmp);
+
        if (list->consistent_hashing)
                mail_hosts_sort_ring(list);
        else