From: Wayne Davison Date: Sat, 27 Jan 2007 14:34:15 +0000 (+0000) Subject: The last MSG_DONE from the receiver to the generator is now followed X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/commitdiff_plain/cc7b86bf9bd8523c9c1f0e7c0aa8741ad7352477 The last MSG_DONE from the receiver to the generator is now followed by the stats.total_read value so that the generator can set its value to that of the receiver. This makes log_exit() log the right value when we're on the server side. --- diff --git a/io.c b/io.c index 7bf0afc6..0968b016 100644 --- a/io.c +++ b/io.c @@ -288,13 +288,17 @@ static void read_msg_fd(void) switch (tag) { case MSG_DONE: - if (len != 0 || !am_generator) { + if (len < 0 || len > 1 || !am_generator) { invalid_msg: rprintf(FERROR, "invalid message %d:%d [%s%s]\n", tag, len, who_am_i(), incremental ? "/incremental" : ""); exit_cleanup(RERR_STREAMIO); } + if (len) { + readfd(fd, buf, len); + stats.total_read = read_longint(fd); + } done_cnt++; break; case MSG_REDO: diff --git a/main.c b/main.c index 273513fe..5371b146 100644 --- a/main.c +++ b/main.c @@ -727,7 +727,8 @@ static int do_recv(int f_in, int f_out, char *local_name) io_flush(FULL_FLUSH); handle_stats(f_in); - send_msg(MSG_DONE, "", 0); + send_msg(MSG_DONE, "", 1); + write_longint(error_pipe[1], stats.total_read); io_flush(FULL_FLUSH); /* Handle any keep-alive packets from the post-processing work