]> git.netwichtig.de Git - user/henk/code/exim.git/blobdiff - src/src/transports/smtp.c
Callout/hold: ensure TLS-proxy process is not waited for as a transport process
[user/henk/code/exim.git] / src / src / transports / smtp.c
index 0bfab53882e0bc3c8544a1c4955dc05297f2fe9b..14eb76921edf43e175dbdd526012c06a50e8dcbd 100644 (file)
@@ -2757,6 +2757,7 @@ if (continue_hostname && continue_sequence == 1)
   address_item * addr;
 
   sx.peer_offered = smtp_peer_options;
+  sx.pending_MAIL = FALSE;
   sx.ok = TRUE;
   sx.next_addr = NULL;
 
@@ -3424,14 +3425,17 @@ propagate it from the initial
          int pid = fork();
          if (pid > 0)          /* parent */
            {
+           waitpid(pid, NULL, 0);
            tls_close(FALSE, FALSE);
            (void)close(sx.inblock.sock);
            continue_transport = NULL;
            continue_hostname = NULL;
            return yield;
            }
-         else if (pid == 0)    /* child */
+         else if (pid == 0)    /* child; fork again to disconnect totally */
            {
+           if ((pid = fork()))
+             _exit(pid ? EXIT_FAILURE : EXIT_SUCCESS);
            smtp_proxy_tls(sx.buffer, sizeof(sx.buffer), pfd[0], sx.ob->command_timeout);
            exim_exit(0);
            }