- 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) {
+ exit_cleanup(RERR_PROTOCOL);
+ }
+ if (remote_protocol < OLD_PROTOCOL_VERSION) {
+ rprintf(FINFO,"%s is very old version of rsync, upgrade recommended.\n",
+ 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 (fuzzy_basis && protocol_version < 29) {
+ rprintf(FERROR,
+ "--fuzzy requires protocol 29 or higher (negotiated %d).\n",
+ protocol_version);
+ exit_cleanup(RERR_PROTOCOL);
+ }
+
+ if (basis_dir_cnt && inplace && protocol_version < 29) {
+ rprintf(FERROR,
+ "%s with --inplace requires protocol 29 or higher (negotiated %d).\n",
+ dest_option, protocol_version);
+ exit_cleanup(RERR_PROTOCOL);
+ }
+
+ if (basis_dir_cnt > 1 && protocol_version < 29) {
+ rprintf(FERROR,
+ "Using more than one %s option requires protocol 29 or higher\n"
+ "(negotiated %d).\n",
+ dest_option, protocol_version);
+ exit_cleanup(RERR_PROTOCOL);
+ }
+
+ if (am_server) {
+ if (!checksum_seed)