Explicitly set kluge_around_eof to a 1 when it is needed.
[rsync/rsync.git] / generator.c
index 9e53be1..6966ec1 100644 (file)
@@ -252,8 +252,8 @@ static void delete_in_dir(struct file_list *flist, char *fbuf,
                if (!dirlist->files[i]->basename)
                        continue;
                if (flist_find(flist, dirlist->files[i]) < 0) {
-                       f_name_to(dirlist->files[i], delbuf);
                        int mode = dirlist->files[i]->mode;
+                       f_name_to(dirlist->files[i], delbuf);
                        if (delete_item(delbuf, mode, DEL_FORCE_RECURSE) < 0)
                                break;
                }
@@ -1075,7 +1075,7 @@ void generate_files(int f_out, struct file_list *flist, char *local_name,
        int need_retouch_dir_perms = 0;
        int save_only_existing = only_existing;
        int save_opt_ignore_existing = opt_ignore_existing;
-       int allowed_lull = io_timeout / 2;
+       int allowed_lull = read_batch ? 0 : io_timeout / 2;
 
        if (protocol_version >= 29) {
                itemizing = 1;
@@ -1200,6 +1200,8 @@ void generate_files(int f_out, struct file_list *flist, char *local_name,
                                       flist, file, i, itemizing,
                                       maybe_PERMS_REPORT, code, allowed_lull,
                                       -1, -1);
+                       if (allowed_lull && !(i % 500))
+                               maybe_send_keepalive(allowed_lull, flist->count);
                }
        }
        recv_generator(NULL, NULL, NULL, 0, 0, 0, code, 0, -1, -1);