* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2002 Martin Pool
- * Copyright (C) 2003-2007 Wayne Davison
+ * Copyright (C) 2003-2009 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
extern int am_server;
extern int am_daemon;
+extern int am_sender;
+extern int am_generator;
extern int io_error;
extern int keep_partial;
extern int got_xfer_error;
+extern int protocol_version;
+extern int output_needs_newline;
extern char *partial_dir;
extern char *logfile_name;
code = exit_code;
/* If this is the exit at the end of the run, the server side
- * should not attempt to output a message (see log.c). */
+ * should not attempt to output a message (see log_exit()). */
if (am_server && code == 0)
am_server = 2;
exit_code = unmodified_code = code;
- if (verbose > 3) {
+ if (output_needs_newline) {
+ fputc('\n', stdout);
+ output_needs_newline = 0;
+ }
+
+ if (DEBUG_GTE(EXIT, 2)) {
rprintf(FINFO,
"_exit_cleanup(code=%d, file=%s, line=%d): entered\n",
code, file, line);
}
+ /* FALLTHROUGH */
+#include "case_N.h"
+
+ if (exit_code && exit_code != RERR_RCVR_ERROR
+ && exit_code != RERR_STREAMIO && exit_code != RERR_SIGNAL1
+ && (protocol_version >= 31 || (!am_sender && !am_generator))) {
+ send_msg_int(MSG_ERROR_EXIT, exit_code);
+ if (am_server && !am_sender && !am_generator)
+ noop_io_until_death();
+ }
+
/* FALLTHROUGH */
#include "case_N.h"
/* FALLTHROUGH */
#include "case_N.h"
- io_flush(FULL_FLUSH);
+ if (!code || am_server || (!am_sender && !am_generator))
+ io_flush(FULL_FLUSH);
/* FALLTHROUGH */
#include "case_N.h"
code = exit_code = RERR_PARTIAL;
}
- if (code || am_daemon || (logfile_name && (am_server || !verbose)))
+ if ((code && code != RERR_RCVR_ERROR)
+ || am_daemon || (logfile_name && (am_server || !INFO_GTE(STATS, 1))))
log_exit(code, file, line);
/* FALLTHROUGH */
#include "case_N.h"
- if (verbose > 2) {
+ if (DEBUG_GTE(EXIT, 1)) {
rprintf(FINFO,
"_exit_cleanup(code=%d, file=%s, line=%d): "
"about to call exit(%d)\n",