DKIM: support timestamp and expiry tags in signing. Bug 2260
[exim.git] / src / src / structs.h
index d8ac19ab8c8eaf3671a88f082da0ddb6b2f1424f..8384920ee16f16b94329f753276aecf8e687f5b7 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. */
 
 
@@ -25,6 +25,13 @@ struct smtp_outblock;
 struct transport_info;
 struct router_info;
 
+/* Growable-string */
+typedef struct gstring {
+  int  size;           /* Current capacity of string memory */
+  int  ptr;            /* Offset at which to append further chars */
+  uschar * s;          /* The string memory */
+} gstring;
+
 /* Structure for remembering macros for the configuration file */
 
 typedef struct macro_item {
@@ -238,7 +245,7 @@ typedef int (*tpt_chunk_cmd_cb)(struct transport_context *, unsigned, unsigned);
 typedef struct transport_context {
   union {                      /* discriminated by option topt_output_string */
     int                          fd;   /* file descriptor to write message to */
-    uschar *             msg;  /* allocated string with written message */
+    gstring *            msg;  /* allocated string with written message */
   } u;
   transport_instance   * tblock;               /* transport */
   struct address_item  * addr;
@@ -249,10 +256,6 @@ typedef struct transport_context {
   /* items below only used with option topt_use_bdat */
   tpt_chunk_cmd_cb       chunk_cb;             /* per-datachunk callback */
   void                 * smtp_context;
-
-  /* items below only used with option topt_output_string */
-  int                    msg_size;
-  int                    msg_ptr;
 } transport_ctx;
 
 
@@ -610,13 +613,14 @@ typedef struct address_item {
     BOOL af_cert_verified:1;           /* delivered with verified TLS cert */
     BOOL af_pass_message:1;            /* pass message in bounces */
     BOOL af_bad_reply:1;               /* filter could not generate autoreply */
-    BOOL af_tcp_fastopen:1;            /* delivery used TCP Fast Open */
+    BOOL af_tcp_fastopen_conn:1;       /* delivery connection used TCP Fast Open */
+    BOOL af_tcp_fastopen:1;            /* delivery usefuly used TCP Fast Open */
 #ifndef DISABLE_PRDR
     BOOL af_prdr_used:1;               /* delivery used SMTP PRDR */
 #endif
     BOOL af_chunking_used:1;           /* delivery used SMTP CHUNKING */
     BOOL af_force_command:1;           /* force_command in pipe transport */
-#ifdef EXPERIMENTAL_DANE
+#ifdef SUPPORT_DANE
     BOOL af_dane_verified:1;           /* TLS cert verify done with DANE */
 #endif
 #ifdef SUPPORT_I18N
@@ -874,7 +878,12 @@ struct ob_dkim {
   uschar *dkim_sign_headers;
   uschar *dkim_strict;
   uschar *dkim_hash;
+  uschar *dkim_timestamps;
   BOOL    dot_stuffed;
+  BOOL    force_bodyhash;
+#ifdef EXPERIMENTAL_ARC
+  uschar *arc_signspec;
+#endif
 };
 
 /* End of structs.h */