Experimental: ESMTP LIMITS extension
[exim.git] / src / src / transports / smtp.h
index 7feb8110b8d2d8f649c2b40b6e5c2d16457b2b95..aff3f545288a072199a15c12fd3f6cfa210a30ca 100644 (file)
@@ -13,7 +13,7 @@
 #define PENDING_OK      (PENDING + OK)
 
 
-#if !defined(DISABLE_TLS) && defined(EXIM_HAVE_INOTIFY)
+#ifndef DISABLE_TLS
 /* Flags structure for validity of TLS configuration */
 
 typedef struct {
@@ -125,7 +125,7 @@ typedef struct {
 #ifdef EXPERIMENTAL_ARC
   uschar       *arc_sign;
 #endif
-#if !defined(DISABLE_TLS) && defined(EXIM_HAVE_INOTIFY)
+#ifndef DISABLE_TLS
   exim_tlslib_state tls_preload;
 #endif
 } smtp_transport_options_block;
@@ -171,14 +171,25 @@ typedef struct {
   BOOL pending_BDAT:1;
   BOOL RCPT_452:1;
   BOOL good_RCPT:1;
+#ifdef EXPERIMENTAL_ESMTP_LIMITS
+  BOOL single_rcpt_domain:1;
+#endif
   BOOL completed_addr:1;
   BOOL send_rset:1;
   BOOL send_quit:1;
+  BOOL send_tlsclose:1;
 
+  unsigned     peer_offered;
+#ifdef EXPERIMENTAL_ESMTP_LIMITS
+  unsigned     peer_limit_mail;
+  unsigned     peer_limit_rcpt;
+  unsigned     peer_limit_rcptdom;
+#endif
+
+  unsigned     max_mail;
   int          max_rcpt;
   int          cmd_count;
 
-  unsigned     peer_offered;
   unsigned     avoid_option;
   uschar *     igquotstr;
   uschar *     helo_data;
@@ -187,6 +198,11 @@ typedef struct {
   uschar *     helo_response;
 #endif
 #ifndef DISABLE_PIPE_CONNECT
+  /* Info about the EHLO response stored to / retrieved from cache.  When
+  operating early-pipe, we use the cached values.  For each of plaintext and
+  crypted we store bitmaps for ESMTP features and AUTH methods.  If the LIMITS
+  extension is built and usable them at least one of the limits values cached
+  is nonzero, and we use the values to constrain the connection. */
   ehlo_resp_precis     ehlo_resp;
 #endif