Mercurial > dovecot > original-hg > dovecot-2.1
changeset 14996:5d6cc3d03eee
director: Reset last-seen-sync-sequence after remote director restarts.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 21 Aug 2013 23:30:07 +0300 |
parents | d463fab6db95 |
children | 9efbc0731929 |
files | src/director/director-connection.c src/director/director-host.c src/director/director-host.h |
diffstat | 3 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/director/director-connection.c Thu Aug 15 20:25:12 2013 +0300 +++ b/src/director/director-connection.c Wed Aug 21 23:30:07 2013 +0300 @@ -406,7 +406,7 @@ conn->host->removed = FALSE; director_host_ref(conn->host); /* make sure we don't keep old sequence values across restarts */ - conn->host->last_seq = 0; + director_host_restarted(conn->host); next_comm_attempt = conn->host->last_protocol_failure + DIRECTOR_PROTOCOL_FAILURE_RETRY_SECS; @@ -646,7 +646,7 @@ host->last_network_failure = 0; if (host->last_seq != 0) { /* it also may have been restarted, reset last_seq */ - host->last_seq = 0; + director_host_restarted(host); forward = TRUE; } } else { @@ -1593,7 +1593,7 @@ i_assert(!host->removed); /* make sure we don't keep old sequence values across restarts */ - host->last_seq = 0; + director_host_restarted(host); conn = director_connection_init_common(dir, fd); conn->name = i_strdup_printf("%s/out", host->name);
--- a/src/director/director-host.c Thu Aug 15 20:25:12 2013 +0300 +++ b/src/director/director-host.c Wed Aug 21 23:30:07 2013 +0300 @@ -80,6 +80,14 @@ i_free(host); } +void director_host_restarted(struct director_host *host) +{ + host->last_seq = 0; + host->last_sync_seq = 0; + host->last_sync_seq_counter = 0; + host->last_sync_timestamp = 0; +} + struct director_host * director_host_get(struct director *dir, const struct ip_addr *ip, unsigned int port)
--- a/src/director/director-host.h Thu Aug 15 20:25:12 2013 +0300 +++ b/src/director/director-host.h Wed Aug 21 23:30:07 2013 +0300 @@ -39,6 +39,8 @@ void director_host_ref(struct director_host *host); void director_host_unref(struct director_host *host); +void director_host_restarted(struct director_host *host); + struct director_host * director_host_get(struct director *dir, const struct ip_addr *ip, unsigned int port);