From: Martin Pool Date: Thu, 23 Aug 2001 06:14:54 +0000 (+0000) Subject: Only use the "@RSYNC EXIT" tag if we're talking to a client about X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/063393d62ddb2de75a0ec2f11295b12a4b929cc3 Only use the "@RSYNC EXIT" tag if we're talking to a client about version 25. This prevents it appearing and messing up the module list when an old client connects to a 2.4.7 server. --- diff --git a/clientserver.c b/clientserver.c index 82c25def..70c12e20 100644 --- a/clientserver.c +++ b/clientserver.c @@ -107,11 +107,11 @@ int start_socket_client(char *host, char *path, int argc, char *argv[]) io_printf(fd,"%s\n",path); if (p) *p = '/'; - while (1) { - /* Old servers may just drop the connection here, - rather than sending a proper EXIT command. Yuck. */ - kludge_around_eof= True; + /* Old servers may just drop the connection here, + rather than sending a proper EXIT command. Yuck. */ + kludge_around_eof = remote_version < 25; + while (1) { if (!read_line(fd, line, sizeof(line)-1)) { return -1; } @@ -386,12 +386,14 @@ static void send_listing(int fd) { int n = lp_numservices(); int i; - + extern int remote_version; + for (i=0;i= 25) + io_printf(fd,"@RSYNCD: EXIT\n"); } /* this is called when a socket connection is established to a client diff --git a/csprotocol.txt b/csprotocol.txt index b41c20fb..fc388202 100644 --- a/csprotocol.txt +++ b/csprotocol.txt @@ -72,3 +72,11 @@ stay tuned (or write it yourself!). +------------ +Protocol version changes + +25 (2001-08-20, 2.4.7pre2) + + Send an explicit "@RSYNC EXIT" command at the end of the + module listing. We never intentionally end the transmission + by just closing the socket anymore. diff --git a/rsync.h b/rsync.h index e5b50382..b26073ee 100644 --- a/rsync.h +++ b/rsync.h @@ -48,7 +48,18 @@ #define SAME_TIME (1<<7) /* update this if you make incompatible changes */ -#define PROTOCOL_VERSION 24 +#define PROTOCOL_VERSION 25 + +/* We refuse to interoperate with versions that are not in this range. + * Note that we assume we'll work with later versions: the onus is on + * people writing them to make sure that they don't send us anything + * we won't understand. + * + * There are two possible explanations for the limit at thirty: either + * to allow new major-rev versions that do not interoperate with us, + * and (more likely) so that we can detect an attempt to connect rsync + * to a non-rsync server, which is unlikely to begin by sending a byte + * between 15 and 30. */ #define MIN_PROTOCOL_VERSION 15 #define MAX_PROTOCOL_VERSION 30