summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2007-01-27 14:34:15 +0000
committerWayne Davison <wayned@samba.org>2007-01-27 14:34:15 +0000
commitcc7b86bf9bd8523c9c1f0e7c0aa8741ad7352477 (patch)
tree034d9d93eb395f62a57e9607139cbb427c8b250f
parent8c18ebe81d53ba65546feb5fff89ae574a361343 (diff)
downloadrsync-cc7b86bf9bd8523c9c1f0e7c0aa8741ad7352477.tar.gz
rsync-cc7b86bf9bd8523c9c1f0e7c0aa8741ad7352477.tar.bz2
rsync-cc7b86bf9bd8523c9c1f0e7c0aa8741ad7352477.zip
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.
-rw-r--r--io.c6
-rw-r--r--main.c3
2 files changed, 7 insertions, 2 deletions
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