X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/46d2a5e6f6e7709d172903b13945d23fc0a2c888..1ddb1855402d48ad735e46abaf0d662e45600ecd:/src/src/child.c diff --git a/src/src/child.c b/src/src/child.c index 5e4b978cd..4a262d623 100644 --- a/src/src/child.c +++ b/src/src/child.c @@ -3,6 +3,7 @@ *************************************************/ /* Copyright (c) University of Cambridge 1995 - 2015 */ +/* Copyright (c) The Exim Maintainers 2020 - 2021 */ /* See the file NOTICE for conditions of use and distribution. */ @@ -26,7 +27,7 @@ Arguments: Returns: nothing */ -static void +void force_fd(int oldfd, int newfd) { if (oldfd == newfd) return; @@ -107,7 +108,17 @@ if (!minimal) else { if (debug_selector != 0) + { argv[n++] = string_sprintf("-d=0x%x", debug_selector); + if (debug_fd > 2) + { + int flags = fcntl(debug_fd, F_GETFD); + if (flags != -1) (void)fcntl(debug_fd, F_SETFD, flags & ~FD_CLOEXEC); + close(2); + dup2(debug_fd, 2); + close(debug_fd); + } + } } DEBUG(D_any) { @@ -268,6 +279,8 @@ if (pid == 0) } } +testharness_pause_ms(100); /* let child work even longer, for exec */ + /* Parent process. Save fork() errno and close the reading end of the stdin pipe. */