X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/98dc857b322cd8e68a67255d2542588b2efbb416..a015788d2199115585634f93142a401ae03310df:/sender.c diff --git a/sender.c b/sender.c index 3afc48dc..00b60c94 100644 --- a/sender.c +++ b/sender.c @@ -20,7 +20,7 @@ #include "rsync.h" extern int verbose; -extern int dry_run; +extern int do_xfers; extern int am_server; extern int am_daemon; extern int log_before_transfer; @@ -28,12 +28,15 @@ extern int log_format_has_i; extern int daemon_log_format_has_i; extern int csum_length; extern int io_error; +extern int allowed_lull; extern int protocol_version; extern int remove_sent_files; extern int updating_basis_file; extern int make_backups; extern int do_progress; extern int inplace; +extern int batch_fd; +extern int write_batch; extern struct stats stats; extern struct file_list *the_file_list; extern char *log_format; @@ -54,6 +57,7 @@ static struct sum_struct *receive_sums(int f) { struct sum_struct *s; int32 i; + int lull_mod = allowed_lull * 5; OFF_T offset = 0; if (!(s = new(struct sum_struct))) @@ -87,6 +91,9 @@ static struct sum_struct *receive_sums(int f) s->sums[i].len = s->blength; offset += s->sums[i].len; + if (allowed_lull && !(i % lull_mod)) + maybe_send_keepalive(); + if (verbose > 3) { rprintf(FINFO, "chunk[%d] len=%d offset=%.0f sum1=%08x\n", @@ -204,6 +211,7 @@ void send_files(struct file_list *flist, int f_out, int f_in) int save_make_backups = make_backups; int itemizing = am_daemon ? daemon_log_format_has_i : !am_server && log_format_has_i; + int f_xfer = write_batch < 0 ? batch_fd : f_out; int i, j; if (verbose > 2) @@ -262,7 +270,7 @@ void send_files(struct file_list *flist, int f_out, int f_in) stats.num_transferred_files++; stats.total_transferred_size += file->length; - if (dry_run) { /* log the transfer */ + if (!do_xfers) { /* log the transfer */ if (!am_server && log_format) log_item(file, &stats, iflags, NULL); write_ndx_and_attrs(f_out, i, iflags, fnamecmp_type, @@ -319,7 +327,7 @@ void send_files(struct file_list *flist, int f_out, int f_in) write_ndx_and_attrs(f_out, i, iflags, fnamecmp_type, xname, xlen); - write_sum_head(f_out, s); + write_sum_head(f_xfer, s); if (verbose > 2) { rprintf(FINFO, "calling match_sums %s\n", @@ -333,7 +341,7 @@ void send_files(struct file_list *flist, int f_out, int f_in) set_compression(fname); - match_sums(f_out, s, mbuf, st.st_size); + match_sums(f_xfer, s, mbuf, st.st_size); if (do_progress) end_progress(st.st_size);