X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/75b6e26f5ee1d313ba0d5b835e287f06b9770559..96c8151125ceb98ed52c0089f6401e6ba05bb41e:/src/src/transports/smtp.c diff --git a/src/src/transports/smtp.c b/src/src/transports/smtp.c index 13410b839..7be9e8e66 100644 --- a/src/src/transports/smtp.c +++ b/src/src/transports/smtp.c @@ -1685,7 +1685,7 @@ current_local_identity = smtp_local_identity(s_compare->current_sender_address, s_compare->tblock); if (!(new_sender_address = deliver_get_sender_address(message_id))) - return 0; + return FALSE; message_local_identity = smtp_local_identity(new_sender_address, s_compare->tblock); @@ -2079,6 +2079,7 @@ if (!continue_hostname) else DEBUG(D_transport) debug_printf("helo needs $sending_ip_address\n"); +PIPE_CONNECT_RETRY: if (sx->early_pipe_active) sx->outblock.conn_args = &sx->conn_args; else @@ -2425,7 +2426,10 @@ if ( smtp_peer_options & OPTION_TLS { HDEBUG(D_transport) debug_printf("failed reaping pipelined cmd responses\n"); - goto RESPONSE_FAILED; + close(sx->cctx.sock); + sx->cctx.sock = -1; + sx->early_pipe_active = FALSE; + goto PIPE_CONNECT_RETRY; } #endif @@ -3280,7 +3284,7 @@ int max_fd = MAX(pfd[0], tls_out.active.sock) + 1; int rc, i; close(pfd[1]); -if ((rc = fork())) +if ((rc = exim_fork(US"tls proxy"))) { DEBUG(D_transport) debug_printf("proxy-proc final-pid %d\n", rc); _exit(rc < 0 ? EXIT_FAILURE : EXIT_SUCCESS); @@ -3455,7 +3459,7 @@ if ((rc = smtp_setup_conn(sx, suppress_tls)) != OK) } /* If there is a filter command specified for this transport, we can now -set it up. This cannot be done until the identify of the host is known. */ +set it up. This cannot be done until the identity of the host is known. */ if (tblock->filter_command) { @@ -4275,7 +4279,7 @@ propagate it from the initial #ifndef DISABLE_TLS if (tls_out.active.sock >= 0) { - int pid = fork(); + int pid = exim_fork(US"tls proxy interproc"); if (pid == 0) /* child; fork again to disconnect totally */ { testharness_pause_ms(100); /* let parent debug out */