Mercurial > dovecot > core-2.2
changeset 14431:084064444f89
director: Don't try to send the new SYNC parameter to old director versions.
This should allow adding new directors to an old director ring without
anything breaking. Once all directors have upgraded they start using the new
features.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 09 Apr 2012 07:52:25 +0300 |
parents | f267a2b3f424 |
children | 366b9e5fc85c |
files | src/director/director-connection.c src/director/director-connection.h src/director/director.c |
diffstat | 3 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/director/director-connection.c Wed Apr 04 11:08:32 2012 +0300 +++ b/src/director/director-connection.c Mon Apr 09 07:52:25 2012 +0300 @@ -82,6 +82,7 @@ struct director *dir; char *name; time_t created; + unsigned int minor_version; /* for incoming connections the director host isn't known until ME-line is received */ @@ -890,6 +891,7 @@ DIRECTOR_VERSION_MAJOR); return -1; } + conn->minor_version = atoi(args[2]); conn->version_received = TRUE; return 1; } @@ -1528,6 +1530,12 @@ return conn->in; } +unsigned int +director_connection_get_minor_version(struct director_connection *conn) +{ + return conn->minor_version; +} + void director_connection_cork(struct director_connection *conn) { o_stream_cork(conn->output);
--- a/src/director/director-connection.h Wed Apr 04 11:08:32 2012 +0300 +++ b/src/director/director-connection.h Mon Apr 09 07:52:25 2012 +0300 @@ -23,6 +23,8 @@ director_connection_get_host(struct director_connection *conn); bool director_connection_is_handshaked(struct director_connection *conn); bool director_connection_is_incoming(struct director_connection *conn); +unsigned int +director_connection_get_minor_version(struct director_connection *conn); void director_connection_cork(struct director_connection *conn); void director_connection_uncork(struct director_connection *conn);
--- a/src/director/director.c Wed Apr 04 11:08:32 2012 +0300 +++ b/src/director/director.c Mon Apr 09 07:52:25 2012 +0300 @@ -263,7 +263,8 @@ str = t_str_new(128); str_printfa(str, "SYNC\t%s\t%u\t%u", net_ip2addr(&host->ip), host->port, seq); - if (minor_version > 0) { + if (minor_version > 0 && + director_connection_get_minor_version(dir->right) > 0) { /* only minor_version>0 supports this parameter */ str_printfa(str, "\t%u", minor_version); }