X-Git-Url: https://git.exim.org/exim.git/blobdiff_plain/74f1a42304ce056cf979d22fb970faae161e3ab2..01603eec64d42431f182b33008206facfc7f800e:/src/src/structs.h diff --git a/src/src/structs.h b/src/src/structs.h index 9ee3dba8d..da61df24f 100644 --- a/src/src/structs.h +++ b/src/src/structs.h @@ -65,6 +65,12 @@ typedef enum { CHUNKING_NOT_OFFERED = -1, CHUNKING_ACTIVE, CHUNKING_LAST} chunking_state_t; +typedef enum { TFO_NOT_USED = 0, + 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 host addresses is done using this structure. */ @@ -420,8 +426,7 @@ typedef struct auth_info { uschar *); /* rest of AUTH command */ int (*clientcode)( /* client function */ struct auth_instance *, - struct smtp_inblock *, /* socket and input buffer */ - struct smtp_outblock *, /* socket and output buffer */ + void *, /* smtp conn, with socket, output and input buffers */ int, /* command timeout */ uschar *, /* buffer for reading response */ int); /* sizeof buffer */ @@ -439,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. */ @@ -561,7 +567,7 @@ typedef struct address_item { uschar *self_hostname; /* after self=pass */ uschar *shadow_message; /* info about shadow transporting */ -#ifdef SUPPORT_TLS +#ifndef DISABLE_TLS uschar *cipher; /* Cipher used for transport */ void *ourcert; /* Certificate offered to peer, binary */ void *peercert; /* Certificate from peer, binary */ @@ -614,7 +620,12 @@ typedef struct address_item { BOOL af_pass_message:1; /* pass message in bounces */ 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 usefuly 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 @@ -625,6 +636,9 @@ typedef struct address_item { #endif #ifdef SUPPORT_I18N BOOL af_utf8_downcvt:1; /* downconvert was done for delivery */ +#endif +#ifdef EXPERIMENTAL_TLS_RESUME + BOOL af_tls_resume:1; /* TLS used a resumed session */ #endif } flags; @@ -739,11 +753,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 @@ -782,6 +797,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(DISABLE_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; @@ -812,6 +841,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 */ @@ -856,19 +887,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 */