rprintf(FERROR_XFER, "(No batched update for%s \"%s\")\n",
is_redo ? " resend of" : "", f_name(file, NULL));
- if (inc_recurse)
+ if (inc_recurse && !dry_run)
send_msg_int(MSG_NO_SEND, ndx);
}
return 0;
}
-static int gen_wants_ndx(int desired_ndx)
+static int gen_wants_ndx(int desired_ndx, int flist_num)
{
static int next_ndx = -1;
static int done_cnt = 0;
static BOOL got_eof = False;
- int flist_num = first_flist->flist_num;
if (got_eof)
return 0;
end_progress(0);
}
if (inc_recurse && first_flist) {
- if (read_batch)
- gen_wants_ndx(first_flist->used + first_flist->ndx_start);
+ if (read_batch) {
+ ndx = first_flist->used + first_flist->ndx_start;
+ gen_wants_ndx(ndx, first_flist->flist_num);
+ }
flist_free(first_flist);
if (first_flist)
continue;
- } else if (read_batch && first_flist)
- gen_wants_ndx(first_flist->used);
+ } else if (read_batch && first_flist) {
+ ndx = first_flist->used;
+ gen_wants_ndx(ndx, first_flist->flist_num);
+ }
if (++phase > max_phase)
break;
if (DEBUG_GTE(RECV, 1))
exit_cleanup(RERR_PROTOCOL);
}
+ if (read_batch) {
+ int wanted = redoing
+ ? we_want_redo(ndx)
+ : gen_wants_ndx(ndx, cur_flist->flist_num);
+ if (!wanted) {
+ rprintf(FINFO,
+ "(Skipping batched update for%s \"%s\")\n",
+ redoing ? " resend of" : "",
+ fname);
+ discard_receive_data(f_in, F_LENGTH(file));
+ file->flags |= FLAG_FILE_SENT;
+ continue;
+ }
+ }
+
if (!do_xfers) { /* log the transfer */
log_item(FCLIENT, file, &stats, iflags, NULL);
if (read_batch)
continue;
}
- if (read_batch) {
- if (!(redoing ? we_want_redo(ndx) : gen_wants_ndx(ndx))) {
- rprintf(FINFO,
- "(Skipping batched update for%s \"%s\")\n",
- redoing ? " resend of" : "",
- fname);
- discard_receive_data(f_in, F_LENGTH(file));
- file->flags |= FLAG_FILE_SENT;
- continue;
- }
- }
-
partialptr = partial_dir ? partial_dir_fname(fname) : fname;
if (protocol_version >= 29) {
if (phase == 2 && delay_updates) /* for protocol_version < 29 */
handle_delayed_updates(local_name);
- if (read_batch) {
- read_int(batch_gen_fd); /* Discard -1 */
- read_del_stats(batch_gen_fd);
- }
-
if (DEBUG_GTE(RECV, 1))
rprintf(FINFO,"recv_files finished\n");