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.
+
+JH/12 Refuse to accept a line "dot, LF" as end-of-DATA unless operating in
+ LF-only mode (as detected from the first header line). Previously we did
+ accept that in (normal) CRLF mode; this has been raised as a possible
+ attack scenario (under the name "smtp smuggling").
+
+JH/13 Add an fdatasync call for the received message data file in spool, before
+ loggging reception and sending the SMTP ack. Previously we only flushed
+ the stdio buffer so there was still the possibility of a disk error.
+
+JH/14 Bug 3061: Avoid a split log line when trying to rewrite a malformed
+ address. Previously, for the last address in a header line (commonly
+ there is only one) the terminating newline was part of the logged
+ information.
+
+JH/15 Bug 3061: Ensure a log line is written for a malformed address in a
+ header, when parsing for address-qualification. Previously one was only
+ written if there were rewrite rules.
+
+JH/16 Two-phase queue runs are now reported in the daemon startup log line and
+ in exiwhat output.
+
+JH/17 Bug 3064: Fix combination of "-q<period> -R <recipients>". Introduction of
+ the multiple-queue-runners facility for 4.97 broke this, giving only a
+ one-time run of the queue.
+
+JH/18 Bug 3068: Log a warning for use of deprecated syntax in query-style
+ lookups.
+
+JH/19 Fix TLS startup. When the last expansion done before the initiation of a
+ TLS session resulted in a forced-fail, a misleading error was logged for
+ the expansino of tls_certificates. This would affect the common case of
+ that option being set (main-section options) but not having any variable
+ parts. It could also potentially affect tls_privatekeys. The underlyding
+ coding errors go back to 4.90 but were only exposed in 4.97.
+
+JH/20 Bug 3047: A recent (somewhere between 10.34 and 10.42) version of the
+ pcre2 library starting allocating 20kB rather than 112 bytes per match
+ call, which broke the 2GB total limitation on Exim's memory management
+ when a user had over 104207 messages stored and the appendfile
+ maildir_quota_directory_regex option is in use. Release the allocated
+ memory every thosand files to avoid this.
+ The same issue arises with the ACL regex condition, which is applied
+ to every line of a received message.
+
+JH/21 Bug 3059: Fix crash in smtp transport. When running for a message for
+ which all recipients had been handled (itself an issue) a null-pointer
+ deref was done on trying to write a retry record. Fix that by counting
+ the outstanding recipients before trying to transmit the message.
+ The situation arose for a second MX try within a transport run, when the
+ first had perm-rejected a recipient (the only one for the connection, in
+ the case seen) during pipelining, and then closed the TCP connection.
+ The transport classified that as an I/O error, leaving the message
+ outstanding but having marked up the recipient as dealt-with. It then
+ tried another MX because of the I/O error. Fix this by converting the
+ message-level status to ok if there was a close but all recipients were
+ dealt with. Thanks to Wolfgand Breyha for debug runs.
+
+JH/22 The ESMTP_LIMITS facility (RFC 9422) is promoted from experimental status
+ and is now controlled by the build-time option DISABLE_ESMTP_LIMITS.
+
+JH/23 Bug 3066: Avoid leaking lookup database credentials to log.
+
+JH/24 Bug 3081: Fix a delivery process crash. When the router "errors_to"
+ option specified a fixed address, later rewriting on that address would
+ trip on the configuration data being readonly. Instead of modifying
+ in-place, copy data. Found and fixed by Peter Benie.
+
+JH/25 Bug 3079: Fix crash in dbmnz. When a key was present for zero-length
+ data a null pointer was followed. Find and testcase by Sebastian Bugge.
Exim version 4.97
mx_fail_domains.
JH/45 Use a (new) separate store pool-pair for DKIM verify working data.
- Previously the permanent pool was used, so the sore could not be freed.
+ Previously the permanent pool was used, so the store could not be freed.
This meant a connection with many messages would use continually-growing
memory.