+ /* 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"
+
+ if (cleanup_child_pid != -1) {
+ int status;
+ int pid = wait_process(cleanup_child_pid, &status, WNOHANG);
+ if (pid == cleanup_child_pid) {
+ status = WEXITSTATUS(status);
+ if (status > code)
+ code = exit_code = status;
+ }
+ }
+
+ /* FALLTHROUGH */
+#include "case_N.h"
+
+ if (cleanup_got_literal && cleanup_fname && cleanup_new_fname
+ && keep_partial && handle_partial_dir(cleanup_new_fname, PDIR_CREATE)) {
+ const char *fname = cleanup_fname;
+ cleanup_fname = NULL;
+ if (cleanup_fd_r != -1)
+ close(cleanup_fd_r);
+ if (cleanup_fd_w != -1) {
+ flush_write_file(cleanup_fd_w);
+ close(cleanup_fd_w);
+ }
+ finish_transfer(cleanup_new_fname, fname, NULL, NULL,
+ cleanup_file, 0, !partial_dir);
+ }
+
+ /* FALLTHROUGH */
+#include "case_N.h"
+
+ if (!code || am_server || (!am_sender && !am_generator))
+ io_flush(FULL_FLUSH);