X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/ebf447ac813fb596b64f6a79bc6404ef04670706..a015788d2199115585634f93142a401ae03310df:/sender.c diff --git a/sender.c b/sender.c index 35706a38..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", @@ -173,18 +180,6 @@ int read_item_attrs(int f_in, int f_out, int ndx, uchar *type_ptr, } *len_ptr = len; - /* XXX Temporary rejection of 2.6.4pre1 & pre2 */ - if (iflags & ITEM_DUMMY_BIT) { - extern int am_sender; - if (!am_sender || !(iflags & (ITEM_LOCAL_CHANGE|ITEM_TRANSFER))) { - rprintf(FERROR, - "Incompatible 2.6.4 pre-release on %s -- upgrade it or use --protocol=28!\n", - am_sender ? "receiver" : "sender"); - exit_cleanup(RERR_PROTOCOL); - } - iflags &= ~ITEM_DUMMY_BIT; - } /* XXX */ - if (iflags & ITEM_TRANSFER) { if (!S_ISREG(the_file_list->files[ndx]->mode)) { rprintf(FERROR, @@ -216,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) @@ -274,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, @@ -331,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", @@ -345,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);