Copyright year bumps for substantive changes 2017
[exim.git] / src / src / transports / smtp.h
index c8df38ab4bb31892c01bad6e65cf1ddd33106496..4bb6d6da3a813833525c4807c718c4e0cb747720 100644 (file)
@@ -2,9 +2,16 @@
 *     Exim - an Internet mail transport agent    *
 *************************************************/
 
-/* Copyright (c) University of Cambridge 1995 - 2015 */
+/* Copyright (c) University of Cambridge 1995 - 2017 */
 /* See the file NOTICE for conditions of use and distribution. */
 
+#define DELIVER_BUFFER_SIZE 4096
+
+#define PENDING          256
+#define PENDING_DEFER   (PENDING + DEFER)
+#define PENDING_OK      (PENDING + OK)
+
+
 /* Private structure for the private options and other private data. */
 
 typedef struct {
@@ -82,6 +89,69 @@ typedef struct {
 #endif
 } smtp_transport_options_block;
 
+/* 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 setting_up:1;
+  BOOL esmtp:1;
+  BOOL esmtp_sent:1;
+#ifndef DISABLE_PRDR
+  BOOL prdr_active:1;
+#endif
+#ifdef SUPPORT_I18N
+  BOOL utf8_needed:1;
+#endif
+  BOOL dsn_all_lasthop:1;
+#if defined(SUPPORT_TLS) && defined(EXPERIMENTAL_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 *     igquotstr;
+  uschar *     helo_data;
+#ifdef EXPERIMENTAL_DSN_INFO
+  uschar *     smtp_greeting;
+  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];
+  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 *);
+
+
 /* Data for reading the private options. */
 
 extern optionlist smtp_transport_options[];