From 916faecb835990164e24ddbfe801acffce3ebf79 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Thu, 4 Jun 2020 21:21:05 -0700 Subject: [PATCH] Only sender can output non-final stats on error The receiving side's stats are split between 2 processes until the very end. --- clientserver.c | 2 +- log.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/clientserver.c b/clientserver.c index b6067ccb..8df14947 100644 --- a/clientserver.c +++ b/clientserver.c @@ -1190,7 +1190,7 @@ static void create_pid_file(void) int len = snprintf(pidbuf, sizeof pidbuf, "%d\n", (int)pid); #ifndef HAVE_FTRUNCATE /* What can we do with a too-long file and no truncate? I guess we'll add extra newlines. */ - while (len < st1.st_size) /* We already verfified that size+1 chars fits in the buffer. */ + while (len < st1.st_size) /* We already verified that st_size+1 chars fits in the buffer. */ pidbuf[len++] = '\n'; /* We don't need the buffer to end in a '\0' (and we may not have room to add it). */ #endif diff --git a/log.c b/log.c index ded8045b..58ad2736 100644 --- a/log.c +++ b/log.c @@ -870,10 +870,14 @@ void log_delete(const char *fname, int mode) */ void log_exit(int code, const char *file, int line) { - rprintf(FLOG,"sent %s bytes received %s bytes total size %s\n", - big_num(stats.total_written), - big_num(stats.total_read), - big_num(stats.total_size)); + /* The receiving side's stats are split between 2 procs until the + * end of the run, so only the sender can output non-final info. */ + if (code == 0 || am_sender) { + rprintf(FLOG,"sent %s bytes received %s bytes total size %s\n", + big_num(stats.total_written), + big_num(stats.total_read), + big_num(stats.total_size)); + } if (code != 0 && am_server != 2) { const char *name; -- 2.47.2