X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/3d38277706a5155d57563d1221e7233d8159470a..9ec16c83be3164bdcfe8412933d5b7fc86cabcb1:/main.c diff --git a/main.c b/main.c index b402c7ad..06c5e9b2 100644 --- a/main.c +++ b/main.c @@ -25,6 +25,19 @@ struct stats stats; extern int verbose; + +/**************************************************************************** +wait for a process to exit, calling io_flush while waiting +****************************************************************************/ +void wait_process(pid_t pid, int *status) +{ + while (waitpid(pid, status, WNOHANG) == 0) { + msleep(20); + io_flush(); + } + *status = WEXITSTATUS(*status); +} + static void report(int f) { time_t t = time(NULL); @@ -240,6 +253,7 @@ static void do_server_sender(int f_in, int f_out, int argc,char *argv[]) char *dir = argv[0]; extern int relative_paths; extern int recurse; + extern int remote_version; if (verbose > 2) rprintf(FINFO,"server_sender starting pid=%d\n",(int)getpid()); @@ -273,6 +287,10 @@ static void do_server_sender(int f_in, int f_out, int argc,char *argv[]) send_files(flist,f_out,f_in); io_flush(); report(f_out); + if (remote_version >= 24) { + /* final goodbye message */ + read_int(f_in); + } io_flush(); exit_cleanup(0); }