git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
TFO: use enum for client status
[exim.git]
/
src
/
src
/
structs.h
diff --git
a/src/src/structs.h
b/src/src/structs.h
index beea57f346ef9b2111a6d0bb3e1c88a2320accec..1ac455ca5789624568e70173a379c2d3ef6a8cc7 100644
(file)
--- a/
src/src/structs.h
+++ b/
src/src/structs.h
@@
-2,7
+2,7
@@
* Exim - an Internet mail transport agent *
*************************************************/
* Exim - an Internet mail transport agent *
*************************************************/
-/* Copyright (c) University of Cambridge 1995 - 201
5
*/
+/* Copyright (c) University of Cambridge 1995 - 201
8
*/
/* See the file NOTICE for conditions of use and distribution. */
/* See the file NOTICE for conditions of use and distribution. */
@@
-25,6
+25,13
@@
struct smtp_outblock;
struct transport_info;
struct router_info;
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 {
/* Structure for remembering macros for the configuration file */
typedef struct macro_item {
@@
-58,6
+65,10
@@
typedef enum { CHUNKING_NOT_OFFERED = -1,
CHUNKING_ACTIVE,
CHUNKING_LAST} chunking_state_t;
CHUNKING_ACTIVE,
CHUNKING_LAST} chunking_state_t;
+typedef enum { TFO_NOT_USED = 0,
+ TFO_ATTEMPTED,
+ TFO_USED } 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. */
/* 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. */
@@
-238,7
+249,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 */
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;
} u;
transport_instance * tblock; /* transport */
struct address_item * addr;
@@
-249,10
+260,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_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;
} transport_ctx;
@@
-417,8
+424,7
@@
typedef struct auth_info {
uschar *); /* rest of AUTH command */
int (*clientcode)( /* client function */
struct auth_instance *,
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 */
int, /* command timeout */
uschar *, /* buffer for reading response */
int); /* sizeof buffer */
@@
-610,13
+616,15
@@
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_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 usefully used TCP Fast Open */
+ BOOL af_pipelining:1; /* delivery used (traditional) pipelining */
#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 */
#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
BOOL af_dane_verified:1; /* TLS cert verify done with DANE */
#endif
#ifdef SUPPORT_I18N
@@
-776,15
+784,21
@@
md5;
typedef struct sha1 {
unsigned int H[5];
unsigned int length;
typedef struct sha1 {
unsigned int H[5];
unsigned int length;
- }
-sha1;
+} sha1;
+
+/* A client-initiated connection. If TLS, the second element is non-NULL */
+typedef struct {
+ int sock;
+ void * tls_ctx;
+} client_conn_ctx;
+
/* Structure used to hold incoming packets of SMTP responses for a specific
socket. The packets which may contain multiple lines (and in some cases,
multiple responses). */
typedef struct smtp_inblock {
/* Structure used to hold incoming packets of SMTP responses for a specific
socket. The packets which may contain multiple lines (and in some cases,
multiple responses). */
typedef struct smtp_inblock {
-
int sock; /* the socket
*/
+
client_conn_ctx * cctx; /* the connection
*/
int buffersize; /* the size of the buffer */
uschar *ptr; /* current position in the buffer */
uschar *ptrend; /* end of data in the buffer */
int buffersize; /* the size of the buffer */
uschar *ptr; /* current position in the buffer */
uschar *ptrend; /* end of data in the buffer */
@@
-796,7
+810,7
@@
specific socket. The packets which may contain multiple lines when pipelining
is in use. */
typedef struct smtp_outblock {
is in use. */
typedef struct smtp_outblock {
-
int sock; /* the socket
*/
+
client_conn_ctx * cctx; /* the connection
*/
int cmd_count; /* count of buffered commands */
int buffersize; /* the size of the buffer */
BOOL authenticating; /* TRUE when authenticating */
int cmd_count; /* count of buffered commands */
int buffersize; /* the size of the buffer */
BOOL authenticating; /* TRUE when authenticating */
@@
-867,12
+881,19
@@
typedef BOOL (*oicf) (uschar *message_id, void *data);
/* DKIM information for transport */
struct ob_dkim {
uschar *dkim_domain;
/* DKIM information for transport */
struct ob_dkim {
uschar *dkim_domain;
+ uschar *dkim_identity;
uschar *dkim_private_key;
uschar *dkim_selector;
uschar *dkim_canon;
uschar *dkim_sign_headers;
uschar *dkim_strict;
uschar *dkim_private_key;
uschar *dkim_selector;
uschar *dkim_canon;
uschar *dkim_sign_headers;
uschar *dkim_strict;
+ uschar *dkim_hash;
+ uschar *dkim_timestamps;
BOOL dot_stuffed;
BOOL dot_stuffed;
+ BOOL force_bodyhash;
+#ifdef EXPERIMENTAL_ARC
+ uschar *arc_signspec;
+#endif
};
/* End of structs.h */
};
/* End of structs.h */