Debug: output priv-gid drop
[users/heiko/exim.git] / src / src / structs.h
index 1ac455ca5789624568e70173a379c2d3ef6a8cc7..7fb32777c0d0d27da96a13eb50e317da6cbb008a 100644 (file)
@@ -66,8 +66,10 @@ typedef enum {       CHUNKING_NOT_OFFERED = -1,
                CHUNKING_LAST} chunking_state_t;
 
 typedef enum { TFO_NOT_USED = 0,
-               TFO_ATTEMPTED,
-               TFO_USED } tfo_state_t;
+               TFO_ATTEMPTED_NODATA,
+               TFO_ATTEMPTED_DATA,
+               TFO_USED_NODATA,
+               TFO_USED_DATA } tfo_state_t;
 
 /* Structure for holding information about a host for use mainly by routers,
 but also used when checking lists of hosts and when transporting. Looking up
@@ -442,6 +444,7 @@ typedef struct ip_address_item {
   int    port;
   BOOL   v6_include_v4;            /* Used in the daemon */
   uschar address[46];
+  uschar * log;                           /* portion of "listening on" log line */
 } ip_address_item;
 
 /* Structure for chaining together arbitrary strings. */
@@ -618,7 +621,11 @@ typedef struct address_item {
     BOOL af_bad_reply:1;               /* filter could not generate autoreply */
     BOOL af_tcp_fastopen_conn:1;       /* delivery connection used TCP Fast Open */
     BOOL af_tcp_fastopen:1;            /* delivery usefully used TCP Fast Open */
+    BOOL af_tcp_fastopen_data:1;       /* delivery sent SMTP commands on TCP Fast Open */
     BOOL af_pipelining:1;              /* delivery used (traditional) pipelining */
+#ifdef EXPERIMENTAL_PIPE_CONNECT
+    BOOL af_early_pipe:1;              /* delivery used connect-time pipelining */
+#endif
 #ifndef DISABLE_PRDR
     BOOL af_prdr_used:1;               /* delivery used SMTP PRDR */
 #endif
@@ -743,11 +750,12 @@ typedef struct {
   const uschar *data;                   /* pointer to data */
 } dns_record;
 
-/* Structure for holding the result of a DNS query. */
+/* Structure for holding the result of a DNS query.  A touch over
+64k big, so take care to release as soon as possible. */
 
 typedef struct {
   int     answerlen;              /* length of the answer */
-  uschar  answer[MAXPACKET];      /* the answer itself */
+  uschar  answer[NS_MAXMSG];      /* the answer itself */
 } dns_answer;
 
 /* Structure for holding the intermediate data while scanning a DNS answer
@@ -786,6 +794,20 @@ typedef struct sha1 {
   unsigned int length;
 } sha1;
 
+/* Information for making an smtp connection */
+typedef struct {
+  transport_instance *  tblock;
+  void *               ob;     /* smtp_transport_options_block * */
+  host_item *           host;
+  int                   host_af;
+  uschar *              interface;
+
+#if defined(SUPPORT_TLS) && defined(SUPPORT_DANE)
+  BOOL dane:1;                 /* connection must do dane */
+  dns_answer           tlsa_dnsa;
+#endif
+} smtp_connect_args;
+
 /* A client-initiated connection. If TLS, the second element is non-NULL */
 typedef struct {
   int  sock;
@@ -816,6 +838,8 @@ typedef struct smtp_outblock {
   BOOL    authenticating;         /* TRUE when authenticating */
   uschar *ptr;                    /* current position in the buffer */
   uschar *buffer;                 /* the buffer itself */
+
+  smtp_connect_args * conn_args;  /* to make connection, if not yet made */
 } smtp_outblock;
 
 /* Structure to hold information about the source of redirection information */
@@ -860,19 +884,21 @@ typedef struct namedlist_block {
 /* Structures for Access Control Lists */
 
 typedef struct acl_condition_block {
-  struct acl_condition_block *next;
-  uschar *arg;
-  int type;
+  struct acl_condition_block * next;
+  uschar *                     arg;
+  int                          type;
   union {
-    BOOL negated;
-    uschar *varname;
+    BOOL       negated;
+    uschar *   varname;
   } u;
 } acl_condition_block;
 
 typedef struct acl_block {
-  struct acl_block *next;
-  acl_condition_block *condition;
-  int verb;
+  struct acl_block *   next;
+  acl_condition_block *        condition;
+  int                  verb;
+  int                  srcline;
+  const uschar *       srcfile;
 } acl_block;
 
 /* smtp transport calc outbound_ip */