From 0725fcc5aa930ce1d9f5e9d37639b2728d9cc260 Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sat, 9 May 2020 18:00:08 +0100 Subject: [PATCH 1/1] Move the fast-ramp two phase queue run support from Experimental to the mainline --- doc/doc-txt/ChangeLog | 6 ++++++ doc/doc-txt/NewStuff | 7 +++++++ src/src/EDITME | 8 ++++---- src/src/config.h.defaults | 2 +- src/src/daemon.c | 14 +++++++------- src/src/exim.c | 12 ++++++------ src/src/functions.h | 2 +- src/src/globals.c | 2 +- src/src/globals.h | 2 +- src/src/queue.c | 2 +- src/src/readconf.c | 2 +- src/src/transport.c | 2 +- 12 files changed, 37 insertions(+), 24 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 3cd92b816..62777266f 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -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 ----------------- diff --git a/doc/doc-txt/NewStuff b/doc/doc-txt/NewStuff index c29525d50..7f8f628f9 100644 --- a/doc/doc-txt/NewStuff +++ b/doc/doc-txt/NewStuff @@ -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 ------------ diff --git a/src/src/EDITME b/src/src/EDITME index 8d8552346..c6f30b58c 100644 --- a/src/src/EDITME +++ b/src/src/EDITME @@ -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 # ############################################################################### diff --git a/src/src/config.h.defaults b/src/src/config.h.defaults index e17f015f9..bc3beb931 100644 --- a/src/src/config.h.defaults +++ b/src/src/config.h.defaults @@ -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 diff --git a/src/src/daemon.c b/src/src/daemon.c index 2bed143a1..1816537ec 100644 --- a/src/src/daemon.c +++ b/src/src/daemon.c @@ -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 diff --git a/src/src/exim.c b/src/src/exim.c index 920e9e226..d8ad19899 100644 --- a/src/src/exim.c +++ b/src/src/exim.c @@ -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 diff --git a/src/src/functions.h b/src/src/functions.h index 0028deb0d..2a4597202 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -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); diff --git a/src/src/globals.c b/src/src/globals.c index ba772c631..e9529b493 100644 --- a/src/src/globals.c +++ b/src/src/globals.c @@ -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; diff --git a/src/src/globals.h b/src/src/globals.h index 3a8e824cf..95cc25f6a 100644 --- a/src/src/globals.h +++ b/src/src/globals.h @@ -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 */ diff --git a/src/src/queue.c b/src/src/queue.c index 37d612482..6748afd5d 100644 --- a/src/src/queue.c +++ b/src/src/queue.c @@ -1531,7 +1531,7 @@ if (s) /******************************************************************************/ /******************************************************************************/ -#ifdef EXPERIMENTAL_QUEUE_RAMP +#ifndef DISABLE_QUEUE_RAMP void queue_notify_daemon(const uschar * msgid) { diff --git a/src/src/readconf.c b/src/src/readconf.c index 40506010c..68079e6f8 100644 --- a/src/src/readconf.c +++ b/src/src/readconf.c @@ -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} }, diff --git a/src/src/transport.c b/src/src/transport.c index 2d8426f29..f9ff521f7 100644 --- a/src/src/transport.c +++ b/src/src/transport.c @@ -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 -- 2.30.2