X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/7c576fcada992ef799700d2fd1a7753f40f1bb7a..a55697acf8d60ff8fc67f8fc46f23b8f53a3b823:/src/src/transports/smtp.h diff --git a/src/src/transports/smtp.h b/src/src/transports/smtp.h index 7127fe31f..0ddb62760 100644 --- a/src/src/transports/smtp.h +++ b/src/src/transports/smtp.h @@ -46,8 +46,11 @@ typedef struct { uschar *hosts_avoid_tls; uschar *hosts_verify_avoid_tls; uschar *hosts_avoid_pipelining; +#ifndef DISABLE_PIPE_CONNECT + uschar *hosts_pipe_connect; +#endif uschar *hosts_avoid_esmtp; -#ifdef SUPPORT_TLS +#ifndef DISABLE_TLS uschar *hosts_nopass_tls; uschar *hosts_noproxy_tls; #endif @@ -75,11 +78,14 @@ typedef struct { #ifdef SUPPORT_SOCKS uschar *socks_proxy; #endif -#ifdef SUPPORT_TLS +#ifndef DISABLE_TLS uschar *tls_certificate; uschar *tls_crl; uschar *tls_privatekey; uschar *tls_require_ciphers; +# ifdef EXPERIMENTAL_TLS_RESUME + uschar *tls_resumption_hosts; +# endif uschar *tls_sni; uschar *tls_verify_certificates; int tls_dh_min_bits; @@ -99,20 +105,26 @@ typedef struct { #endif } smtp_transport_options_block; +#define SOB (smtp_transport_options_block *) + + /* smtp connect context */ typedef struct { uschar * from_addr; address_item * addrlist; - host_item * host; - int host_af; + + smtp_connect_args conn_args; int port; - uschar * interface; BOOL verify:1; BOOL lmtp:1; BOOL smtps:1; BOOL ok:1; BOOL setting_up:1; +#ifndef DISABLE_PIPE_CONNECT + BOOL early_pipe_ok:1; + BOOL early_pipe_active:1; +#endif BOOL esmtp:1; BOOL esmtp_sent:1; BOOL pipelining_used:1; @@ -123,12 +135,16 @@ typedef struct { BOOL utf8_needed:1; #endif BOOL dsn_all_lasthop:1; -#if defined(SUPPORT_TLS) && defined(SUPPORT_DANE) - BOOL dane:1; +#if !defined(DISABLE_TLS) && defined(SUPPORT_DANE) BOOL dane_required:1; +#endif +#ifndef DISABLE_PIPE_CONNECT + BOOL pending_BANNER:1; + BOOL pending_EHLO:1; #endif BOOL pending_MAIL:1; BOOL pending_BDAT:1; + BOOL RCPT_452:1; BOOL good_RCPT:1; BOOL completed_addr:1; BOOL send_rset:1; @@ -145,7 +161,11 @@ typedef struct { uschar * smtp_greeting; uschar * helo_response; #endif +#ifndef DISABLE_PIPE_CONNECT + ehlo_resp_precis ehlo_resp; +#endif + struct timeval delivery_start; address_item * first_addr; address_item * next_addr; address_item * sync_addr; @@ -156,13 +176,11 @@ typedef struct { uschar buffer[DELIVER_BUFFER_SIZE]; uschar inbuffer[4096]; uschar outbuffer[4096]; - - transport_instance * tblock; - smtp_transport_options_block * ob; } smtp_context; extern int smtp_setup_conn(smtp_context *, BOOL); extern int smtp_write_mail_and_rcpt_cmds(smtp_context *, int *); +extern int smtp_reap_early_pipe(smtp_context *, int *); /* Data for reading the private options. */ @@ -182,12 +200,6 @@ extern void smtp_transport_closedown(transport_instance *); -extern int smtp_auth(uschar *, unsigned, address_item *, host_item *, - smtp_transport_options_block *, BOOL, - smtp_inblock *, smtp_outblock *); -extern BOOL smtp_mail_auth_str(uschar *, unsigned, - address_item *, smtp_transport_options_block *); - #ifdef SUPPORT_SOCKS extern int socks_sock_connect(host_item *, int, int, uschar *, transport_instance *, int);