X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/59faec8b8b51780b6e13d02647113d62370c8add..cb2e1f18c21bfe197e5f08e1553057ea440d320c:/generator.c diff --git a/generator.c b/generator.c index 9e53be12..6966ec1d 100644 --- a/generator.c +++ b/generator.c @@ -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);