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
This commit is contained in:
Andrew Tridgell committed 1998-05-13 08:58:07 +00:00
1 parent 0c515f17c4
commit 13c5fc0e14
2 files changed
+35 -33

No files matched your search

+4 -4
View File
@@ -32,7 +32,7 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
int sargc=0;
char line[1024];
char *p;
int version;
extern int remote_version;
fd = open_socket_out(host, rsync_port);
if (fd == -1) {
@@ -52,7 +52,7 @@ int start_socket_client(char *host, char *path, int argc, char *argv[])
return -1;
}
if (sscanf(line,"@RSYNCD: %d", &version) != 1) {
if (sscanf(line,"@RSYNCD: %d", &remote_version) != 1) {
return -1;
}
@@ -214,9 +214,9 @@ static int start_daemon(int fd)
{
char line[200];
char *motd;
int version;
int i = -1;
extern char *config_file;
extern int remote_version;
if (!lp_load(config_file)) {
exit_cleanup(1);
@@ -230,7 +230,7 @@ static int start_daemon(int fd)
return -1;
}
if (sscanf(line,"@RSYNCD: %d", &version) != 1) {
if (sscanf(line,"@RSYNCD: %d", &remote_version) != 1) {
return -1;
}
+31 -29
View File
@@ -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();
}