Mention the number of child args.
[rsync/rsync.git] / compat.c
index d7e90be..45073d3 100644 (file)
--- a/compat.c
+++ b/compat.c
 int remote_protocol = 0;
 int file_extra_cnt = 0; /* count of file-list extras that everyone gets */
 int inc_recurse = 0;
+int compat_flags = 0;
+int use_safe_inc_flist = 0;
 
 extern int am_server;
 extern int am_sender;
-extern int am_daemon;
-extern int io_timeout;
 extern int local_server;
 extern int inplace;
 extern int recurse;
 extern int use_qsort;
 extern int allow_inc_recurse;
+extern int preallocate_files;
 extern int append_mode;
 extern int fuzzy_basis;
 extern int read_batch;
@@ -74,7 +75,7 @@ int filesfrom_convert = 0;
 #define CF_INC_RECURSE  (1<<0)
 #define CF_SYMLINK_TIMES (1<<1)
 #define CF_SYMLINK_ICONV (1<<2)
-#define CF_TIMEOUT_ACTIVE (1<<3)
+#define CF_SAFE_FLIST   (1<<3)
 
 static const char *client_info;
 
@@ -189,6 +190,14 @@ void setup_protocol(int f_out,int f_in)
        if (read_batch)
                check_batch_flags();
 
+#ifndef SUPPORT_PREALLOCATION
+       if (preallocate_files && !am_sender) {
+               rprintf(FERROR, "preallocation is not supported on this %s\n",
+                       am_server ? "Server" : "Client");
+               exit_cleanup(RERR_SYNTAX);
+       }
+#endif
+
        if (protocol_version < 30) {
                if (append_mode == 1)
                        append_mode = 2;
@@ -248,7 +257,6 @@ void setup_protocol(int f_out,int f_in)
                        exit_cleanup(RERR_PROTOCOL);
                }
        } else if (protocol_version >= 30) {
-               int compat_flags;
                if (am_server) {
                        compat_flags = allow_inc_recurse ? CF_INC_RECURSE : 0;
 #ifdef CAN_SET_SYMLINK_TIMES
@@ -257,22 +265,11 @@ void setup_protocol(int f_out,int f_in)
 #ifdef ICONV_OPTION
                        compat_flags |= CF_SYMLINK_ICONV;
 #endif
-                       if (am_daemon && io_timeout && protocol_version >= 31)
-                               compat_flags |= CF_TIMEOUT_ACTIVE;
+                       if (local_server || strchr(client_info, 'f') != NULL)
+                               compat_flags |= CF_SAFE_FLIST;
                        write_byte(f_out, compat_flags);
-                       if (compat_flags & CF_TIMEOUT_ACTIVE)
-                               write_varint(f_out, io_timeout);
-               } else {
+               } else
                        compat_flags = read_byte(f_in);
-                       if (compat_flags & CF_TIMEOUT_ACTIVE) {
-                               int timeout = read_varint(f_in);
-                               if (!io_timeout || io_timeout > timeout) {
-                                       if (INFO_GTE(MISC, 2))
-                                               rprintf(FINFO, "Setting --timeout=%d to match server\n", timeout);
-                                       io_timeout = timeout;
-                               }
-                       }
-               }
                /* The inc_recurse var MUST be set to 0 or 1. */
                inc_recurse = compat_flags & CF_INC_RECURSE ? 1 : 0;
                if (am_sender) {
@@ -296,6 +293,7 @@ void setup_protocol(int f_out,int f_in)
                            read_batch ? "batch file" : "connection");
                        exit_cleanup(RERR_SYNTAX);
                }
+               use_safe_inc_flist = (compat_flags & CF_SAFE_FLIST) || protocol_version >= 31;
                need_messages_from_generator = 1;
 #ifdef CAN_SET_SYMLINK_TIMES
        } else if (!am_sender) {