OpenSSL: feed keylog & OCSP debug through normal channel
[exim.git] / src / src / child.c
index 5e4b978cd2210155a5d59b9f008743e769e6e0ca..4a262d623a2d19d40e3896561d22e421480a36ad 100644 (file)
@@ -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. */