extern int protocol_version;
extern int remove_source_files;
extern int preserve_hard_links;
+extern BOOL extra_flist_sending_enabled;
extern struct stats stats;
extern struct file_list *cur_flist;
#ifdef ICONV_OPTION
maxfd = new_fd;
}
- if (am_sender && inc_recurse && !flist_eof && !defer_forwarding_messages && !cnt
- && file_total - file_old_total < MAX_FILECNT_LOOKAHEAD
- && file_total - file_old_total >= MIN_FILECNT_LOOKAHEAD)
- tv.tv_sec = 0;
- else
+ if (extra_flist_sending_enabled && !defer_forwarding_messages) {
+ if (file_total - file_old_total < MAX_FILECNT_LOOKAHEAD
+ && file_total - file_old_total >= MIN_FILECNT_LOOKAHEAD)
+ tv.tv_sec = 0;
+ else {
+ extra_flist_sending_enabled = False;
+ tv.tv_sec = select_timeout;
+ }
+ } else
tv.tv_sec = select_timeout;
tv.tv_usec = 0;
defer_forwarding_messages = 0;
exit_cleanup(RERR_SOCKETIO);
}
- if (am_sender && tv.tv_sec == 0)
+ if (extra_flist_sending_enabled && !defer_forwarding_messages) {
+ extra_flist_sending_enabled = False;
send_extra_file_list(sock_f_out, -1);
- else
+ extra_flist_sending_enabled = !flist_eof;
+ } else
check_timeout();
continue;
}
extern int csum_length;
extern int append_mode;
extern int io_error;
+extern int flist_eof;
extern int allowed_lull;
extern int preserve_xattrs;
extern int protocol_version;
extern struct stats stats;
extern struct file_list *cur_flist, *first_flist, *dir_flist;
+BOOL extra_flist_sending_enabled;
+
/**
* @file
*
rprintf(FINFO, "send_files starting\n");
while (1) {
- if (inc_recurse)
+ if (inc_recurse) {
send_extra_file_list(f_out, MIN_FILECNT_LOOKAHEAD);
+ extra_flist_sending_enabled = !flist_eof;
+ }
/* This call also sets cur_flist. */
ndx = read_ndx_and_attrs(f_in, &iflags, &fnamecmp_type,
xname, &xlen);
+ extra_flist_sending_enabled = False;
+
if (ndx == NDX_DONE) {
if (!am_server && INFO_GTE(PROGRESS, 2) && cur_flist) {
set_current_file_index(NULL, 0);