/* This is only called by the sender. */
-static void read_final_goodbye(int f_in, int f_out, int flist_count)
+static void read_final_goodbye(int f_in, int f_out)
{
int i;
if (protocol_version < 29)
i = read_int(f_in);
else {
- while ((i = read_int(f_in)) == flist_count
+ while ((i = read_int(f_in)) == the_file_list->count
&& read_shortint(f_in) == ITEM_IS_NEW) {
/* Forward the keep-alive (no-op) to the receiver. */
- write_int(f_out, flist_count);
+ write_int(f_out, the_file_list->count);
write_shortint(f_out, ITEM_IS_NEW);
}
}
if (i != -1) {
- rprintf(FERROR, "Invalid packet from generator at end of run.\n");
+ rprintf(FERROR, "Invalid packet at end of run (%d) [%s]\n",
+ i, who_am_i());
exit_cleanup(RERR_PROTOCOL);
}
}
io_flush(FULL_FLUSH);
report(f_out);
if (protocol_version >= 24)
- read_final_goodbye(f_in, f_out, flist->count);
+ read_final_goodbye(f_in, f_out);
io_flush(FULL_FLUSH);
exit_cleanup(0);
}
{
int pid;
int status = 0;
- int error_pipe[2], name_pipe[2];
- BOOL need_name_pipe = (basis_dir[0] || partial_dir || fuzzy_basis
- || (inplace && make_backups)) && !dry_run;
+ int error_pipe[2];
/* The receiving side mustn't obey this, or an existing symlink that
* points to an identical file won't be replaced by the referent. */
copy_links = 0;
if (preserve_hard_links)
- init_hard_links(flist);
+ init_hard_links();
- if (fd_pair(error_pipe) < 0
- || (need_name_pipe && fd_pair(name_pipe) < 0)) {
+ if (fd_pair(error_pipe) < 0) {
rsyserr(FERROR, errno, "pipe failed in do_recv");
exit_cleanup(RERR_IPC);
}
if (pid == 0) {
close(error_pipe[0]);
- if (need_name_pipe) {
- close(name_pipe[1]);
- set_blocking(name_pipe[0]);
- } else
- name_pipe[0] = -1;
if (f_in != f_out)
close(f_out);
/* set place to send errors */
set_msg_fd_out(error_pipe[1]);
- recv_files(f_in, flist, local_name, name_pipe[0]);
+ recv_files(f_in, flist, local_name);
io_flush(FULL_FLUSH);
report(f_in);
while (read_int(f_in) == flist->count
&& read_shortint(f_in) == ITEM_IS_NEW) {}
- rprintf(FERROR, "Invalid packet from server at end of run.\n");
+ rprintf(FERROR, "Invalid packet at end of run [%s]\n",
+ who_am_i());
exit_cleanup(RERR_PROTOCOL);
}
stop_write_batch();
close(error_pipe[1]);
- if (need_name_pipe) {
- close(name_pipe[0]);
- set_nonblocking(name_pipe[1]);
- } else
- name_pipe[1] = -1;
if (f_in != f_out)
close(f_in);
set_msg_fd_in(error_pipe[0]);
- generate_files(f_out, flist, local_name, name_pipe[1]);
+ generate_files(f_out, flist, local_name);
report(-1);
io_flush(FULL_FLUSH);
send_files(flist,f_out,f_in);
io_flush(FULL_FLUSH);
if (protocol_version >= 24)
- read_final_goodbye(f_in, f_out, flist->count);
+ read_final_goodbye(f_in, f_out);
if (pid != -1) {
if (verbose > 3)
rprintf(FINFO,"client_run waiting on %d\n", (int) pid);