diff options
| author | Wayne Davison <wayned@samba.org> | 2003-09-09 15:58:53 +0000 |
|---|---|---|
| committer | Wayne Davison <wayned@samba.org> | 2003-09-09 15:58:53 +0000 |
| commit | 8a9709dee5027238985c79ec7f429c95c577d423 (patch) | |
| tree | 7cf8993d87804e6802c0960948cc3e32b531d656 /compat.c | |
| parent | daa598df119f67e96739a1bfcdf5d6ea75efee78 (diff) | |
| download | android_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.c | 42 |
1 files changed, 30 insertions, 12 deletions
@@ -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); } } - |
