Move the fast-ramp two phase queue run support from Experimental to the mainline
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 9 May 2020 17:00:08 +0000 (18:00 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sat, 9 May 2020 17:00:08 +0000 (18:00 +0100)
12 files changed:
doc/doc-txt/ChangeLog
doc/doc-txt/NewStuff
src/src/EDITME
src/src/config.h.defaults
src/src/daemon.c
src/src/exim.c
src/src/functions.h
src/src/globals.c
src/src/globals.h
src/src/queue.c
src/src/readconf.c
src/src/transport.c

index 3cd92b8168bfe78680c71ad3408e0832038bc1d4..62777266f6f22717985a64b2c9c8a257e1b9a880 100644 (file)
@@ -3,6 +3,12 @@ affect Exim's operation, with an unchanged configuration file.  For new
 options, and new features, see the NewStuff file next to this ChangeLog.
 
 
+Since Exim version 4.94
+----------------------
+
+(none yet)
+
+
 Exim version 4.94
 -----------------
 
index c29525d5002b97cddd714ab9630b991e5536eba2..7f8f628f9b26627ac49bc558c582d923d8b67496 100644 (file)
@@ -6,6 +6,13 @@ Before a formal release, there may be quite a lot of detail so that people can
 test from the snapshots or the Git before the documentation is updated. Once
 the documentation is updated, this file is reduced to a short list.
 
+Version 4.95
+------------
+
+ 1. The fast-ramp two phase queue run support, previously experimental, is
+    now supported by default.
+
+
 Version 4.94
 ------------
 
index 8d8552346a98233a98eaa8c856b7abb64757e939..c6f30b58c8ab877872b271b2cfc1c8b247f4df3c 100644 (file)
@@ -561,7 +561,6 @@ DISABLE_MAL_MKS=yes
 # DISABLE_DNSSEC=yes
 
 # To disable support for Events set DISABLE_EVENT to "yes"
-
 # DISABLE_EVENT=yes
 
 
@@ -570,6 +569,10 @@ DISABLE_MAL_MKS=yes
 # SUPPORT_PIPE_CONNECT=yes
 
 
+# Uncomment the following to remove the fast-ramp two-phase-queue-run support
+# DISABLE_QUEUE_RAMP=yes
+
+
 #------------------------------------------------------------------------------
 # Compiling Exim with experimental features. These are documented in
 # experimental-spec.txt. "Experimental" means that the way these features are
@@ -632,9 +635,6 @@ DISABLE_MAL_MKS=yes
 # Uncomment the following line to include support for TLS Resumption
 # EXPERIMENTAL_TLS_RESUME=yes
 
-# Uncomment the following to include the fast-ramp two-phase-queue-run support
-# EXPERIMENTAL_QUEUE_RAMP=yes
-
 ###############################################################################
 #                 THESE ARE THINGS YOU MIGHT WANT TO SPECIFY                  #
 ###############################################################################
index e17f015f96775627175eda7e49427b1284c80d24..bc3beb931637c6c54207efa8d5d9baeff6e7bb43 100644 (file)
@@ -52,6 +52,7 @@ Do not put spaces between # and the 'define'.
 #define DISABLE_OCSP
 #define DISABLE_PIPE_CONNECT
 #define DISABLE_PRDR
+#define DISABLE_QUEUE_RAMP
 #define DISABLE_TLS
 #define DISABLE_D_OPTION
 
@@ -202,7 +203,6 @@ Do not put spaces between # and the 'define'.
 #define EXPERIMENTAL_DCC
 #define EXPERIMENTAL_DSN_INFO
 #define EXPERIMENTAL_LMDB
-#define EXPERIMENTAL_QUEUE_RAMP
 #define EXPERIMENTAL_QUEUEFILE
 #define EXPERIMENTAL_SRS
 #define EXPERIMENTAL_SRS_NATIVE
index 2bed143a188ac1ed57e263904c142309545bd813..1816537ecfc055d17cd639961ee41b3fa630cd92 100644 (file)
@@ -1138,14 +1138,14 @@ for (struct cmsghdr * cp = CMSG_FIRSTHDR(&msg);
 buf[sz] = 0;
 switch (buf[0])
   {
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
   case NOTIFY_MSG_QRUN:
     /* this should be a message_id */
     DEBUG(D_queue_run)
       debug_printf("%s: qrunner trigger: %s\n", __FUNCTION__, buf+1);
     memcpy(queuerun_msgid, buf+1, MESSAGE_ID_LENGTH+1);
     return TRUE;
-#endif /*EXPERIMENTAL_QUEUE_RAMP*/
+#endif
 
   case NOTIFY_QUEUE_SIZE_REQ:
     {
@@ -2120,7 +2120,7 @@ for (;;)
     else
       {
       DEBUG(D_any) debug_printf("%s received\n",
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
        *queuerun_msgid ? "qrun notification" :
 #endif
        "SIGALRM");
@@ -2165,7 +2165,7 @@ for (;;)
             *p++ = '-';
             *p++ = 'q';
             if (  f.queue_2stage
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
               && !*queuerun_msgid
 #endif
               ) *p++ = 'q';
@@ -2177,7 +2177,7 @@ for (;;)
            extra[0] = *queue_name
              ? string_sprintf("%sG%s", opt, queue_name) : opt;
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
            if (*queuerun_msgid)
              {
              log_write(0, LOG_MAIN, "notify triggered queue run");
@@ -2212,7 +2212,7 @@ for (;;)
 
           /* No need to re-exec; SIGALRM remains set to the default handler */
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
          if (*queuerun_msgid)
            {
            log_write(0, LOG_MAIN, "notify triggered queue run");
@@ -2248,7 +2248,7 @@ for (;;)
       /* Reset the alarm clock */
 
       sigalrm_seen = FALSE;
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
       if (*queuerun_msgid)
        *queuerun_msgid = 0;
       else
index 920e9e226d422df06924e466b3104ab0b75e00f8..d8ad1989929a4f5e8af22b0ebdb79d905fe112cd 100644 (file)
@@ -946,6 +946,9 @@ g = string_cat(NULL, US"Support for:");
 #ifndef DISABLE_DKIM
   g = string_cat(g, US" DKIM");
 #endif
+#ifdef SUPPORT_DMARC
+  g = string_cat(g, US" DMARC");
+#endif
 #ifndef DISABLE_DNSSEC
   g = string_cat(g, US" DNSSEC");
 #endif
@@ -967,15 +970,15 @@ g = string_cat(NULL, US"Support for:");
 #ifdef SUPPORT_PROXY
   g = string_cat(g, US" PROXY");
 #endif
+#ifndef DISABLE_QUEUE_RAMP
+  g = string_cat(g, US" Experimental_Queue_Ramp");
+#endif
 #ifdef SUPPORT_SOCKS
   g = string_cat(g, US" SOCKS");
 #endif
 #ifdef SUPPORT_SPF
   g = string_cat(g, US" SPF");
 #endif
-#ifdef SUPPORT_DMARC
-  g = string_cat(g, US" DMARC");
-#endif
 #ifdef TCP_FASTOPEN
   tcp_init();
   if (f.tcp_fastopen_ok) g = string_cat(g, US" TCP_Fast_Open");
@@ -995,9 +998,6 @@ g = string_cat(NULL, US"Support for:");
 #ifdef EXPERIMENTAL_LMDB
   g = string_cat(g, US" Experimental_LMDB");
 #endif
-#ifdef EXPERIMENTAL_QUEUE_RAMP
-  g = string_cat(g, US" Experimental_Queue_Ramp");
-#endif
 #ifdef EXPERIMENTAL_QUEUEFILE
   g = string_cat(g, US" Experimental_QUEUEFILE");
 #endif
index 0028deb0d6d2622aa0c8e88d463c6984e74df84d..2a4597202fbabfbe5a5e42e1c3595836390351a0 100644 (file)
@@ -379,7 +379,7 @@ extern void    queue_check_only(void);
 extern unsigned queue_count(void);
 extern unsigned queue_count_cached(void);
 extern void    queue_list(int, uschar **, int);
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 extern void    queue_notify_daemon(const uschar * hostname);
 #endif
 extern void    queue_run(uschar *, uschar *, BOOL);
index ba772c631cf2759106285248dc5aecdc874cd481..e9529b493ec9f3701fddb7169350782591d6914b 100644 (file)
@@ -382,7 +382,7 @@ BOOL    prod_requires_admin    = TRUE;
 BOOL    proxy_session          = FALSE;
 #endif
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 BOOL    queue_fast_ramp                = FALSE;
 #endif
 BOOL    queue_list_requires_admin = TRUE;
index 3a8e824cf897e98dfb5a02880a37e9b848eb79db..95cc25f6a2f2e641ca5f0a43d37c555ea985d20d 100644 (file)
@@ -792,7 +792,7 @@ extern uschar *prvscheck_result;       /* Set during prvscheck expansion item */
 extern const uschar *qualify_domain_recipient; /* Domain to qualify recipients with */
 extern uschar *qualify_domain_sender;  /* Domain to qualify senders with */
 extern uschar *queue_domains;          /* Queue these domains */
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 extern BOOL    queue_fast_ramp;        /* 2-phase queue-run overlap */
 #endif
 extern BOOL    queue_list_requires_admin; /* TRUE if -bp requires admin */
index 37d6124822b0b2c8725080b48a03a35d08d20ce7..6748afd5d8c99e5eaa237ccf29f530faaf165edc 100644 (file)
@@ -1531,7 +1531,7 @@ if (s)
 /******************************************************************************/
 /******************************************************************************/
 
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
 void
 queue_notify_daemon(const uschar * msgid)
 {
index 40506010c0bf1eb10948fd1f70272f6b3f3da24d..68079e6f82bc4c525246014e823b757c99bbdc1d 100644 (file)
@@ -262,7 +262,7 @@ static optionlist optionlist_config[] = {
   { "qualify_domain",           opt_stringptr,   {&qualify_domain_sender} },
   { "qualify_recipient",        opt_stringptr,   {&qualify_domain_recipient} },
   { "queue_domains",            opt_stringptr,   {&queue_domains} },
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
   { "queue_fast_ramp",          opt_bool,        {&queue_fast_ramp} },
 #endif
   { "queue_list_requires_admin",opt_bool,        {&queue_list_requires_admin} },
index 2d8426f297acfadfe03dfe432e826ddc8261c77e..f9ff521f78f5208429650d12f337e0f6345bb43c 100644 (file)
@@ -1571,7 +1571,7 @@ for (host_item * host = hostlist; host; host = host->next)
     {
     sprintf(CS buffer, "%.200s:%d", host->name, host_record->sequence);
     dbfn_write(dbm_file, buffer, host_record, sizeof(dbdata_wait) + host_length);
-#ifdef EXPERIMENTAL_QUEUE_RAMP
+#ifndef DISABLE_QUEUE_RAMP
     if (f.queue_2stage && queue_fast_ramp && !queue_run_in_order)
       queue_notify_daemon(message_id);
 #endif