From: Timo Sirainen Date: Sun, 5 Jun 2016 11:54:05 +0000 (+0300) Subject: director: Fixed ignoring an obsolete up/down change while host is desynced. X-Git-Tag: 2.3.0.rc1~3559 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12f8ffba02e99b53ee71cd44f9947c6a59ff9ea4;p=thirdparty%2Fdovecot%2Fcore.git director: Fixed ignoring an obsolete up/down change while host is desynced. --- diff --git a/src/director/director-connection.c b/src/director/director-connection.c index 2beb327073..1ad6e02f42 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -927,6 +927,11 @@ director_cmd_host_int(struct director_connection *conn, const char *const *args, str_printfa(str, "director(%s): Host %s is being updated before previous update had finished (", conn->name, net_ip2addr(&host->ip)); + if (host->down != down && + host->last_updown_change > last_updown_change) { + /* our host has a newer change. preserve it. */ + down = host->down; + } if (host->down != down) { if (host->down) str_append(str, "down -> up"); @@ -942,10 +947,6 @@ director_cmd_host_int(struct director_connection *conn, const char *const *args, str_append(str, ") - "); vhost_count = I_MIN(vhost_count, host->vhost_count); - if (host->down != down) { - if (host->last_updown_change <= last_updown_change) - down = host->last_updown_change; - } last_updown_change = I_MAX(last_updown_change, host->last_updown_change); str_printfa(str, "setting to state=%s vhosts=%u",