aboutsummaryrefslogtreecommitdiffstats
path: root/compat.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2003-09-09 15:58:53 +0000
committerWayne Davison <wayned@samba.org>2003-09-09 15:58:53 +0000
commit8a9709dee5027238985c79ec7f429c95c577d423 (patch)
tree7cf8993d87804e6802c0960948cc3e32b531d656 /compat.c
parentdaa598df119f67e96739a1bfcdf5d6ea75efee78 (diff)
downloadandroid_external_rsync-8a9709dee5027238985c79ec7f429c95c577d423.tar.gz
android_external_rsync-8a9709dee5027238985c79ec7f429c95c577d423.tar.bz2
android_external_rsync-8a9709dee5027238985c79ec7f429c95c577d423.zip
Changed most instances of "remote_version" to "protocol_version", and
others to "remote_protocol". Downgrade the protocol_version if the remote_protocol" is lower. Output the protocol values if the verbose level is large enough. Exit if the user tried to force a protocol value that is not within the range that we can handle. Fixed the output of the "very old version of rsync" message to output the right Client/Server string.
Diffstat (limited to 'compat.c')
-rw-r--r--compat.c42
1 files changed, 30 insertions, 12 deletions
diff --git a/compat.c b/compat.c
index f89fb513..9a925775 100644
--- a/compat.c
+++ b/compat.c
@@ -25,6 +25,8 @@
#include "rsync.h"
+int remote_protocol = 0;
+
extern int am_server;
extern int preserve_links;
@@ -37,7 +39,7 @@ extern int always_checksum;
extern int checksum_seed;
-extern int remote_version;
+extern int protocol_version;
extern int verbose;
extern int read_batch; /* dw */
@@ -45,25 +47,42 @@ extern int write_batch; /* dw */
void setup_protocol(int f_out,int f_in)
{
- if (remote_version == 0) {
+ if (remote_protocol == 0) {
if (am_server) {
- remote_version = read_int(f_in);
- write_int(f_out,PROTOCOL_VERSION);
+ remote_protocol = read_int(f_in);
+ write_int(f_out, protocol_version);
} else {
- write_int(f_out,PROTOCOL_VERSION);
- remote_version = read_int(f_in);
+ write_int(f_out, protocol_version);
+ remote_protocol = read_int(f_in);
}
+ if (protocol_version > remote_protocol)
+ protocol_version = remote_protocol;
}
- if (remote_version < MIN_PROTOCOL_VERSION ||
- remote_version > MAX_PROTOCOL_VERSION) {
+ if (verbose > 3) {
+ rprintf(FINFO, "(%s) Protocol versions: remote=%d, negotiated=%d\n",
+ am_server? "Server" : "Client", remote_protocol, protocol_version);
+ }
+ if (remote_protocol < MIN_PROTOCOL_VERSION
+ || remote_protocol > MAX_PROTOCOL_VERSION) {
rprintf(FERROR,"protocol version mismatch - is your shell clean?\n");
rprintf(FERROR,"(see the rsync man page for an explanation)\n");
exit_cleanup(RERR_PROTOCOL);
- }
- if (remote_version < OLD_PROTOCOL_VERSION)
+ }
+ if (remote_protocol < OLD_PROTOCOL_VERSION) {
rprintf(FINFO,"%s is very old version of rsync, upgrade recommended.\n",
- am_server ? "Server" : "Client");
+ am_server? "Client" : "Server");
+ }
+ if (protocol_version < MIN_PROTOCOL_VERSION) {
+ rprintf(FERROR, "--protocol must be at least %d on the %s.\n",
+ MIN_PROTOCOL_VERSION, am_server? "Server" : "Client");
+ exit_cleanup(RERR_PROTOCOL);
+ }
+ if (protocol_version > PROTOCOL_VERSION) {
+ rprintf(FERROR, "--protocol must be no more than %d on the %s.\n",
+ PROTOCOL_VERSION, am_server? "Server" : "Client");
+ exit_cleanup(RERR_PROTOCOL);
+ }
if (am_server) {
if (read_batch || write_batch) /* dw */
@@ -75,4 +94,3 @@ void setup_protocol(int f_out,int f_in)
checksum_seed = read_int(f_in);
}
}
-