Refactor authenticators API to take an (opaque) smtp connection context
[exim.git] / src / src / transports / smtp.h
index 14c0c7556bc5ece820b501f5b07e361f95e5a69a..3219b05a9b265b1c272032b4d32d25d6f8af28dc 100644 (file)
@@ -32,6 +32,7 @@ typedef struct {
 #ifdef SUPPORT_DANE
   uschar *hosts_try_dane;
   uschar *hosts_require_dane;
+  uschar *dane_require_tls_ciphers;
 #endif
   uschar *hosts_try_fastopen;
 #ifndef DISABLE_PRDR
@@ -87,9 +88,15 @@ typedef struct {
   uschar *tls_try_verify_hosts;
   uschar *tls_verify_cert_hostnames;
 #endif
+#ifdef SUPPORT_I18N
+  uschar *utf8_downconvert;
+#endif
 #ifndef DISABLE_DKIM
   struct ob_dkim dkim;
 #endif
+#ifdef EXPERIMENTAL_ARC
+  uschar *arc_sign;
+#endif
 } smtp_transport_options_block;
 
 /* smtp connect context */
@@ -108,6 +115,7 @@ typedef struct {
   BOOL setting_up:1;
   BOOL esmtp:1;
   BOOL esmtp_sent:1;
+  BOOL pipelining_used:1;
 #ifndef DISABLE_PRDR
   BOOL prdr_active:1;
 #endif
@@ -129,8 +137,8 @@ typedef struct {
   int          max_rcpt;
   int          cmd_count;
 
-  uschar       peer_offered;
-  uschar       avoid_option;
+  unsigned     peer_offered;
+  unsigned     avoid_option;
   uschar *     igquotstr;
   uschar *     helo_data;
 #ifdef EXPERIMENTAL_DSN_INFO
@@ -142,8 +150,9 @@ typedef struct {
   address_item *       next_addr;
   address_item *       sync_addr;
 
-  smtp_inblock  inblock;
-  smtp_outblock outblock;
+  client_conn_ctx      cctx;
+  smtp_inblock         inblock;
+  smtp_outblock                outblock;
   uschar       buffer[DELIVER_BUFFER_SIZE];
   uschar       inbuffer[4096];
   uschar       outbuffer[4096];
@@ -173,9 +182,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 *);