diff options
| author | Andrew Tridgell <tridge@samba.org> | 1998-05-13 08:58:07 +0000 |
|---|---|---|
| committer | Andrew Tridgell <tridge@samba.org> | 1998-05-13 08:58:07 +0000 |
| commit | 13c5fc0e1462307270145b8528e96a8cebfdcdc0 (patch) | |
| tree | 70bf4c2126479baa801f81606f1dd5fced814f58 /compat.c | |
| parent | 0c515f17c44344813e8949fbb684b357ad70cfdf (diff) | |
| download | android_external_rsync-13c5fc0e1462307270145b8528e96a8cebfdcdc0.tar.gz android_external_rsync-13c5fc0e1462307270145b8528e96a8cebfdcdc0.tar.bz2 android_external_rsync-13c5fc0e1462307270145b8528e96a8cebfdcdc0.zip | |
save one round trip (version swapping) for daemon.
This is an imcompatible change in the socket protocol. You get "is
your shell clean" if using an older rsync client
Diffstat (limited to 'compat.c')
| -rw-r--r-- | compat.c | 60 |
1 files changed, 31 insertions, 29 deletions
@@ -40,35 +40,37 @@ extern int verbose; void setup_protocol(int f_out,int f_in) { - if (am_server) { - remote_version = read_int(f_in); - write_int(f_out,PROTOCOL_VERSION); - write_flush(f_out); - } else { - write_int(f_out,PROTOCOL_VERSION); - write_flush(f_out); - remote_version = read_int(f_in); - } + if (remote_version == 0) { + if (am_server) { + remote_version = read_int(f_in); + write_int(f_out,PROTOCOL_VERSION); + write_flush(f_out); + } else { + write_int(f_out,PROTOCOL_VERSION); + write_flush(f_out); + remote_version = read_int(f_in); + } + } - if (remote_version < MIN_PROTOCOL_VERSION || - remote_version > MAX_PROTOCOL_VERSION) { - rprintf(FERROR,"protocol version mismatch - is your shell clean?\n"); - exit_cleanup(1); - } - - if (verbose > 2) - rprintf(FINFO, "local_version=%d remote_version=%d\n", - PROTOCOL_VERSION, remote_version); - - if (remote_version >= 12) { - if (am_server) { - checksum_seed = time(NULL); - write_int(f_out,checksum_seed); - } else { - checksum_seed = read_int(f_in); - } - } - - checksum_init(); + if (remote_version < MIN_PROTOCOL_VERSION || + remote_version > MAX_PROTOCOL_VERSION) { + rprintf(FERROR,"protocol version mismatch - is your shell clean?\n"); + exit_cleanup(1); + } + + if (verbose > 2) + rprintf(FINFO, "local_version=%d remote_version=%d\n", + PROTOCOL_VERSION, remote_version); + + if (remote_version >= 12) { + if (am_server) { + checksum_seed = time(NULL); + write_int(f_out,checksum_seed); + } else { + checksum_seed = read_int(f_in); + } + } + + checksum_init(); } |
