DANE: move to mainline
[exim.git] / src / src / transports / smtp.h
index e12c0ab946f7572d59636e6b11942ee310e09783..14c0c7556bc5ece820b501f5b07e361f95e5a69a 100644 (file)
@@ -2,7 +2,7 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2015 */
+/* Copyright (c) University of Cambridge 1995 - 2018 */
 /* See the file NOTICE for conditions of use and distribution. */
 
 #define DELIVER_BUFFER_SIZE 4096
@@ -29,7 +29,7 @@ typedef struct {
   uschar *hosts_try_auth;
   uschar *hosts_require_auth;
   uschar *hosts_try_chunking;
-#ifdef EXPERIMENTAL_DANE
+#ifdef SUPPORT_DANE
   uschar *hosts_try_dane;
   uschar *hosts_require_dane;
 #endif
@@ -46,7 +46,10 @@ typedef struct {
   uschar *hosts_verify_avoid_tls;
   uschar *hosts_avoid_pipelining;
   uschar *hosts_avoid_esmtp;
+#ifdef SUPPORT_TLS
   uschar *hosts_nopass_tls;
+  uschar *hosts_noproxy_tls;
+#endif
   int     command_timeout;
   int     connect_timeout;
   int     data_timeout;
@@ -91,21 +94,20 @@ typedef struct {
 
 /* smtp connect context */
 typedef struct {
+  uschar *             from_addr;
   address_item *       addrlist;
   host_item *          host;
   int                  host_af;
   int                  port;
   uschar *             interface;
 
+  BOOL verify:1;
   BOOL lmtp:1;
   BOOL smtps:1;
   BOOL ok:1;
-  BOOL send_rset:1;
-  BOOL send_quit:1;
   BOOL setting_up:1;
   BOOL esmtp:1;
   BOOL esmtp_sent:1;
-  BOOL pending_MAIL:1;
 #ifndef DISABLE_PRDR
   BOOL prdr_active:1;
 #endif
@@ -113,14 +115,22 @@ typedef struct {
   BOOL utf8_needed:1;
 #endif
   BOOL dsn_all_lasthop:1;
-#if defined(SUPPORT_TLS) && defined(EXPERIMENTAL_DANE)
+#if defined(SUPPORT_TLS) && defined(SUPPORT_DANE)
   BOOL dane:1;
   BOOL dane_required:1;
 #endif
+  BOOL pending_MAIL:1;
+  BOOL pending_BDAT:1;
+  BOOL good_RCPT:1;
+  BOOL completed_addr:1;
+  BOOL send_rset:1;
+  BOOL send_quit:1;
 
   int          max_rcpt;
+  int          cmd_count;
 
   uschar       peer_offered;
+  uschar       avoid_option;
   uschar *     igquotstr;
   uschar *     helo_data;
 #ifdef EXPERIMENTAL_DSN_INFO
@@ -128,6 +138,10 @@ typedef struct {
   uschar *     helo_response;
 #endif
 
+  address_item *       first_addr;
+  address_item *       next_addr;
+  address_item *       sync_addr;
+
   smtp_inblock  inblock;
   smtp_outblock outblock;
   uschar       buffer[DELIVER_BUFFER_SIZE];
@@ -138,7 +152,8 @@ typedef struct {
   smtp_transport_options_block *       ob;
 } smtp_context;
 
-extern int smtp_setup_conn(smtp_context *, BOOL, BOOL);
+extern int smtp_setup_conn(smtp_context *, BOOL);
+extern int smtp_write_mail_and_rcpt_cmds(smtp_context *, int *);
 
 
 /* Data for reading the private options. */