git: a509d8ed3c98 - main - mail/exim*: update to 4.98 release (+)

From: Dima Panov <fluffy_at_FreeBSD.org>
Date: Mon, 15 Jul 2024 10:53:38 UTC
The branch main has been updated by fluffy:

URL: https://cgit.FreeBSD.org/ports/commit/?id=a509d8ed3c988f56d55faaf9245c3253e9fc00ed

commit a509d8ed3c988f56d55faaf9245c3253e9fc00ed
Author:     Dima Panov <fluffy@FreeBSD.org>
AuthorDate: 2024-07-15 10:51:07 +0000
Commit:     Dima Panov <fluffy@FreeBSD.org>
CommitDate: 2024-07-15 10:51:07 +0000

    mail/exim*: update to 4.98 release (+)
    
    Reported by:    VVD (via IRC)
---
 mail/exim-doc-html/Makefile               |   2 +-
 mail/exim-doc-html/distinfo               |  14 +-
 mail/exim-ldap2/Makefile                  |   1 -
 mail/exim/Makefile                        |   4 +-
 mail/exim/distinfo                        |   6 +-
 mail/exim/files/patch-periodic-queue-runs | 212 ------------------------------
 mail/exim/files/patch-src-lookups-dnsdb.c |  66 ----------
 mail/exim/files/patch-src_tls-openssl.c   |  11 --
 8 files changed, 13 insertions(+), 303 deletions(-)

diff --git a/mail/exim-doc-html/Makefile b/mail/exim-doc-html/Makefile
index ca43854331e7..43a994de4171 100644
--- a/mail/exim-doc-html/Makefile
+++ b/mail/exim-doc-html/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	exim
-PORTVERSION=	4.97.1
+PORTVERSION=	4.98
 CATEGORIES=	mail
 MASTER_SITES=	EXIM
 MASTER_SITE_SUBDIR=	/exim4/ \
diff --git a/mail/exim-doc-html/distinfo b/mail/exim-doc-html/distinfo
index 26cad29c5fb1..5442787163fc 100644
--- a/mail/exim-doc-html/distinfo
+++ b/mail/exim-doc-html/distinfo
@@ -1,7 +1,7 @@
-TIMESTAMP = 1704499920
-SHA256 (exim/exim-html-4.97.1.tar.bz2) = 9e2cc6b39f4480ee7f575946466d025331fc21368c873a8685b66fdb1919693c
-SIZE (exim/exim-html-4.97.1.tar.bz2) = 647718
-SHA256 (exim/exim-pdf-4.97.1.tar.bz2) = 9761ab9f6099bb865b9838ecf3d62008683cadd2ba2ae6fbb9640139044640ba
-SIZE (exim/exim-pdf-4.97.1.tar.bz2) = 2176843
-SHA256 (exim/exim-postscript-4.97.1.tar.bz2) = a01809e46d2c6283482788822445187299325d6e909611f6496d2e5ad1f1d14b
-SIZE (exim/exim-postscript-4.97.1.tar.bz2) = 1144052
+TIMESTAMP = 1721038337
+SHA256 (exim/exim-html-4.98.tar.bz2) = 89a4f17a18461f7156d0f7779a292612a547cedb13e5eb10fc70b0973d0a1001
+SIZE (exim/exim-html-4.98.tar.bz2) = 650008
+SHA256 (exim/exim-pdf-4.98.tar.bz2) = 90def6b48a47d3dab0513dcb61b5a7c896eeca8f233b1d412d441b1067ca7e0d
+SIZE (exim/exim-pdf-4.98.tar.bz2) = 2186363
+SHA256 (exim/exim-postscript-4.98.tar.bz2) = 8d405ef9024d72255534c7ab7af3da98d5e1a83acbf528d97cbddfb014e24a5c
+SIZE (exim/exim-postscript-4.98.tar.bz2) = 1150095
diff --git a/mail/exim-ldap2/Makefile b/mail/exim-ldap2/Makefile
index a2078c6faa88..0619677e438f 100644
--- a/mail/exim-ldap2/Makefile
+++ b/mail/exim-ldap2/Makefile
@@ -1,4 +1,3 @@
-PORTREVISION=	1
 PKGNAMESUFFIX=	-ldap2
 MASTERDIR=	${.CURDIR}/../exim
 
diff --git a/mail/exim/Makefile b/mail/exim/Makefile
index 3fc8b7e82928..2a9c9578667b 100644
--- a/mail/exim/Makefile
+++ b/mail/exim/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	exim
 PORTVERSION?=	${EXIM_VERSION}
-PORTREVISION?=	5
+PORTREVISION?=	0
 CATEGORIES=	mail
 MASTER_SITES=	EXIM:exim
 MASTER_SITE_SUBDIR=	/exim4/:exim \
@@ -109,7 +109,7 @@ EXTRA_PATCHES+=	${FILESDIR}/extra-patch-Local-sa-exim.c
 EXTRA_PATCHES+=	${FILESDIR}/extra-patch-Local-sa-exim.conf
 .endif
 
-EXIM_VERSION=	4.97.1
+EXIM_VERSION=	4.98
 SA_EXIM_VERSION=4.2.1
 EXIM_INSTALL_ARG+=	"-no_chown" "-no_symlink"
 EXTRA_PATCHES+=	`${FIND} ${PATCHDIR} -name '74_*.patch'|${SORT} -h`
diff --git a/mail/exim/distinfo b/mail/exim/distinfo
index f3c9f86041e0..5a49e8ab04d2 100644
--- a/mail/exim/distinfo
+++ b/mail/exim/distinfo
@@ -1,5 +1,5 @@
-TIMESTAMP = 1704046714
-SHA256 (exim/exim-4.97.1.tar.bz2) = 3a9614ac5b5d10dd98bfc7594561503a51a89c2ccbc52bca3153ee98af1cb37a
-SIZE (exim/exim-4.97.1.tar.bz2) = 2071215
+TIMESTAMP = 1721038320
+SHA256 (exim/exim-4.98.tar.bz2) = acfd93f6e4a38e4887867614770ea062b2453ed93e355772adeae6c6598b0d92
+SIZE (exim/exim-4.98.tar.bz2) = 2099901
 SHA256 (exim/sa-exim-4.2.1.tar.gz) = 24d4bf7b0fdddaea11f132981cebb6a86a4ab20ef54111a8ebd481b421c6e2c1
 SIZE (exim/sa-exim-4.2.1.tar.gz) = 68933
diff --git a/mail/exim/files/patch-periodic-queue-runs b/mail/exim/files/patch-periodic-queue-runs
deleted file mode 100644
index b19336269151..000000000000
--- a/mail/exim/files/patch-periodic-queue-runs
+++ /dev/null
@@ -1,212 +0,0 @@
-From ced0bbf43860a2e4ddc88e3ba20ae731324586c5 Mon Sep 17 00:00:00 2001
-From: Jeremy Harris <jgh146exb@wizmail.org>
-Date: Fri, 15 Dec 2023 21:05:32 +0000
-Subject: [PATCH] Fix periodic queue runs.  Bug 3046
-
-Broken-by: 7d5055276a22
----
- doc/ChangeLog |  5 ++++
- src/daemon.c      | 58 ++++++++++++++++++++++++++++---------------
- src/structs.h     |  2 +-
- 3 files changed, 44 insertions(+), 21 deletions(-)
-
-diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog
-index 85064cc8d..c46f3b8c0 100644
---- doc/ChangeLog
-+++ doc/ChangeLog
-@@ -53,6 +53,11 @@ JH/10 Bug 3058: Ensure that a failing expansion in a router "set" option defers
-       the routing operation.  Previously it would silently stop routing the
-       message.
- 
-+JH/11 Bug 3046: Fix queue-runs.  Previously, the arrivel of a notification or
-+      info-request event close in time to a scheduled run timer could result in
-+      the latter being missed, and no further queue scheduled runs being
-+      initiated.  This ouwld be more likely on high-load systems.
-+
- 
- 
- Exim version 4.97
-diff --git a/src/src/daemon.c b/src/src/daemon.c
-index f2183c735..aff05120a 100644
---- src/daemon.c
-+++ src/daemon.c
-@@ -1258,10 +1258,9 @@ static const uschar * queuerun_msg_qname;
- 
- /* The notifier socket has something to read. Pull the message from it, decode
- and do the action.
-+*/
- 
--Return TRUE if a sigalrm should be emulated */
--
--static BOOL
-+static void
- daemon_notification(void)
- {
- uschar buf[256], cbuf[256];
-@@ -1277,8 +1276,8 @@ struct msghdr msg = { .msg_name = &sa_un,
- ssize_t sz;
- 
- buf[sizeof(buf)-1] = 0;
--if ((sz = recvmsg(daemon_notifier_fd, &msg, 0)) <= 0) return FALSE;
--if (sz >= sizeof(buf)) return FALSE;
-+if ((sz = recvmsg(daemon_notifier_fd, &msg, 0)) <= 0) return;
-+if (sz >= sizeof(buf)) return;
- 
- #ifdef notdef
- debug_printf("addrlen %d\n", msg.msg_namelen);
-@@ -1351,7 +1350,7 @@ switch (buf[0])
- 	  : !buf[1+MESSAGE_ID_LENGTH+1]
- 	 )
- 	{ queuerun_msg_qname = q->name; break; }
--    return TRUE;
-+    return;
- #endif
- 
-   case NOTIFY_QUEUE_SIZE_REQ:
-@@ -1373,7 +1372,7 @@ switch (buf[0])
-     regex_at_daemon(buf);
-     break;
-   }
--return FALSE;
-+return;
- }
- 
- 
-@@ -1432,7 +1431,7 @@ for (qrunner * q = qrunners, * next; q; q = next)
-   if (sorted)
-     {
-     qrunner ** p = &sorted;
--    for (qrunner * qq; qq = *p; p = &(qq->next))
-+    for (qrunner * qq; qq = *p; p = &qq->next)
-       if (  q->next_tick < qq->next_tick
- 	 || q->next_tick == qq->next_tick && q->interval < qq->interval
- 	 )
-@@ -1451,6 +1450,13 @@ qrunners = sorted;
- return qrunners ? qrunners->next_tick - time(NULL) : 0;
- }
- 
-+/* See if we can do a queue run.  If policy limit permit, kick one off.
-+If both notification and timer events are present, handle the former
-+and leave the timer outstanding.
-+
-+Return the number of seconds until the next due runner.
-+*/
-+
- static int
- daemon_qrun(int local_queue_run_max, struct pollfd * fd_polls, int listen_socket_count)
- {
-@@ -1464,13 +1470,16 @@ DEBUG(D_any) debug_printf("%s received\n",
- enough queue runners on the go. If we are not running as root, a re-exec is
- required. In the calling process, restart the alamr timer for the next run.  */
- 
--if (is_multiple_qrun())
-+if (is_multiple_qrun())				/* we are managing periodic runs */
-   if (local_queue_run_max <= 0 || queue_run_count < local_queue_run_max)
-     {
-     qrunner * q = NULL;
- 
- #ifndef DISABLE_QUEUE_RAMP
--    if (*queuerun_msgid)	/* See if we can start another runner for this queue */
-+    /* If this is a triggered run for a specific message, see if we can start
-+    another runner for this queue. */
-+
-+    if (*queuerun_msgid)
-       {
-       for (qrunner * qq = qrunners; qq; qq = qq->next)
- 	if (qq->name == queuerun_msg_qname)
-@@ -1481,13 +1490,13 @@ if (is_multiple_qrun())
-       }
-     else
- #endif
--      /* In order of run priority, find the first queue for which we can start
--      a runner */
-+      /* Normal periodic runL in order of run priority, find the first queue
-+      for which we can start a runner */
- 
-       for (q = qrunners; q; q = q->next)
- 	if (q->run_count < q->run_max) break;
- 
--    if (q)
-+    if (q)					/* found a queue to run */
-       {
-       pid_t pid;
- 
-@@ -1619,19 +1628,23 @@ if (is_multiple_qrun())
-       }
-     }
- 
--sigalrm_seen = FALSE;
-+/* The queue run has been initiated (unless we were already running enough) */
-+
- #ifndef DISABLE_QUEUE_RAMP
--if (*queuerun_msgid)		/* it was a fast-ramp kick */
-+if (*queuerun_msgid)		/* it was a fast-ramp kick; dealt with */
-   *queuerun_msgid = 0;
- else				/* periodic or one-time queue run */
- #endif
--  {		/* Impose a minimum 1s tick, even when a run was outstanding */
-+  /* Set up next timer callback. Impose a minimum 1s tick,
-+  even when a run was outstanding */
-+  {
-   int interval = next_qrunner_interval();
-   if (interval <= 0) interval = 1;
- 
-+  sigalrm_seen = FALSE;
-   if (qrunners)			/* there are still periodic qrunners */
-     {
--    ALARM(interval);
-+    ALARM(interval);		/* set up next qrun tick */
-     return interval;
-     }
-   }
-@@ -2612,7 +2625,7 @@ for (;;)
- 
-   The other option is that we have an inetd wait timeout specified to -bw. */
- 
--  if (sigalrm_seen)
-+  if (sigalrm_seen || *queuerun_msgid)
-     if (inetd_wait_timeout > 0)
-       daemon_inetd_wtimeout(last_connection_time);	/* Might not return */
-     else
-@@ -2641,7 +2654,9 @@ for (;;)
-     select() was interrupted so that we reap the child. This might still leave
-     a small window when a SIGCHLD could get lost. However, since we use SIGCHLD
-     only to do the reaping more quickly, it shouldn't result in anything other
--    than a delay until something else causes a wake-up. */
-+    than a delay until something else causes a wake-up.
-+    For the normal case, wait for either a pollable fd (eg. new connection) or
-+    or a SIGALRM (for a periodic queue run) */
- 
-     if (sigchld_seen)
-       {
-@@ -2706,10 +2721,13 @@ for (;;)
- 	  break;	/* to top of daemon loop */
- 	  }
- #endif
-+	/* Handle the daemon-notifier socket.  If it was a fast-ramp
-+	notification then queuerun_msgid will have a nonzerolength string. */
-+
- 	if (dnotify_poll && dnotify_poll->revents & POLLIN)
- 	  {
- 	  dnotify_poll->revents = 0;
--	  sigalrm_seen = daemon_notification();
-+	  daemon_notification();
- 	  break;	/* to top of daemon loop */
- 	  }
- 	for (struct pollfd * p = fd_polls; p < fd_polls + listen_socket_count;
-diff --git a/src/src/structs.h b/src/src/structs.h
-index 209d657c6..256560ef8 100644
---- src/structs.h
-+++ src/structs.h
-@@ -964,7 +964,7 @@ typedef struct qrunner {
-   struct qrunner * next;	/* list sorted by next tick */
- 
-   uschar *	name;		/* NULL for the default queue */
--  unsigned	interval;	/* tick rate, seconds */
-+  unsigned	interval;	/* tick rate, seconds. Zero for a one-time run */
-   time_t	next_tick;	/* next run should, or should have, start(ed) */
-   unsigned	run_max;	/* concurrent queue runner limit */
-   unsigned	run_count;	/* current runners */
--- 
-2.30.2
-
diff --git a/mail/exim/files/patch-src-lookups-dnsdb.c b/mail/exim/files/patch-src-lookups-dnsdb.c
deleted file mode 100644
index 2e8438c122ec..000000000000
--- a/mail/exim/files/patch-src-lookups-dnsdb.c
+++ /dev/null
@@ -1,66 +0,0 @@
-From 79670d3c32ccb37fe06f25d8192943b58606a32a Mon Sep 17 00:00:00 2001
-From: Jeremy Harris <jgh146exb@wizmail.org>
-Date: Fri, 17 Nov 2023 16:55:17 +0000
-Subject: [PATCH] Lookups: Fix dnsdb lookup of multi-chunk TXT.  Bug 3054
-
-Broken=by: f6b1f8e7d642
-Source: https://git.exim.org/exim.git/patch/79670d3c32cc
-
---- src/lookups/dnsdb.c.orig	2023-11-04 13:55:49.000000000 +0100
-+++ src/lookups/dnsdb.c	2023-11-17 21:34:25.986385000 +0100
-@@ -387,38 +387,31 @@
-         }
- 
-       /* Other kinds of record just have one piece of data each, but there may be
--      several of them, of course. */
-+      several of them, of course.  TXT & SPF can have data in multiple chunks. */
- 
-       if (yield->ptr) yield = string_catn(yield, outsep, 1);
- 
-       if (type == T_TXT || type == T_SPF)
--        {
--        if (!outsep2)			/* output only the first item of data */
-+	for (unsigned data_offset = 0; data_offset + 1 < rr->size; )
- 	  {
--	  uschar n = (rr->data)[0];
--	  /* size byte + data bytes must not excced the RRs length */
--	  if (n + 1 <= rr->size)
--	    yield = string_catn(yield, US (rr->data+1), n);
--	  }
--        else
--          for (unsigned data_offset = 0; data_offset < rr->size; )
--            {
--            uschar chunk_len = (rr->data)[data_offset];
--	    int remain = rr->size - data_offset;
-+	  uschar chunk_len = (rr->data)[data_offset];
-+	  int remain;
- 
--	    /* Apparently there are resolvers that do not check RRs before passing
--	    them on, and glibc fails to do so.  So every application must...
--	    Check for chunk len exceeding RR */
-+	  if (outsep2 && *outsep2 && data_offset != 0)
-+	    yield = string_catn(yield, outsep2, 1);
- 
--	    if (chunk_len > remain)
--	      chunk_len = remain;
-+	  /* Apparently there are resolvers that do not check RRs before passing
-+	  them on, and glibc fails to do so.  So every application must...
-+	  Check for chunk len exceeding RR */
- 
--            if (*outsep2  && data_offset != 0)
--              yield = string_catn(yield, outsep2, 1);
--            yield = string_catn(yield, US ((rr->data) + ++data_offset), --chunk_len);
--            data_offset += chunk_len;
--            }
--        }
-+	  remain = rr->size - ++data_offset;
-+	  if (chunk_len > remain)
-+	    chunk_len = remain;
-+	  yield = string_catn(yield, US ((rr->data) + data_offset), chunk_len);
-+	  data_offset += chunk_len;
-+
-+	  if (!outsep2) break;		/* output only the first chunk of the RR */
-+	  }
-       else if (type == T_TLSA)
- 	if (rr->size < 3)
- 	  continue;
diff --git a/mail/exim/files/patch-src_tls-openssl.c b/mail/exim/files/patch-src_tls-openssl.c
deleted file mode 100644
index 9306c0a193a0..000000000000
--- a/mail/exim/files/patch-src_tls-openssl.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/tls-openssl.c.orig	2023-11-07 21:07:29.239948000 +0100
-+++ src/tls-openssl.c	2023-11-07 21:08:03.517118000 +0100
-@@ -2605,7 +2605,7 @@
-     asking for certificate-status under DANE, so this callback won't run for
-     that combination. It still will for non-DANE. */
- 
--#ifdef EXIM_HAVE_OPENSSL_OCSP_RESP_GET0_SIGNER
-+#if defined(EXIM_HAVE_OPENSSL_OCSP_RESP_GET0_SIGNER) && defined(SUPPORT_DANE)
-     X509 * signer;
- 
-     if (  tls_out.dane_verified