Re: verify=recipient/callout,hold fails in 4.99

Lena--- via Exim-dev <[email protected]> Thu, 28 May 2026 17:44:34 +0300
Newsgroups gmane.mail.exim.devel
Message-ID <[email protected]>
Hi Jeremy,

> I think you've hit the item that post-4.99 JH/15 fixed:  d2353fcd8f60
> 
> +JH/15 Fix use of a verify held-open connection. When used with TLS the
> +      details of the connection were not being properly passed to a later
> +      delivery process, resulting in a null-indirection fault.
> 
> This would likely be present in 4.99.3 as that only adds security fixes over
> 4.99.  Options include
> 
> - trying to cherry-pick that commit onto 4.99.3 and building
> - building the current master
> - sticking with the workaround of disabling "hold"

I tried to apply the patch
https://code.exim.org/exim/exim/commit/d2353fcd8f602a1f4fdeb31ae006e6b7bc46b349.patch

got compilation error:

verify.c:1162:46: error: no member named 'dane_verified' in 'tls_support'
 1162 |         cutthrough.is_dane =    tls_out.sni && tls_out.dane_verified;
      |                                                ~~~~~~~ ^

because I compile Exim without DANE and DNSSEC.
Then I patched the patched file:

--- verify.c.neizmen    2026-05-28 16:49:00.000000000 +0300
+++ verify.c    2026-05-28 17:04:16.676681000 +0300
@@ -1159,7 +1159,11 @@
       cutthrough.callout_hold_only = !cutthrough.delivery;
       if ((cutthrough.is_tls = tls_out.active.sock >= 0))
        {
+#ifdef SUPPORT_DANE
        cutthrough.is_dane =    tls_out.sni && tls_out.dane_verified;
+#else
+       cutthrough.is_dane =    0;
+#endif
        cutthrough.sni =        tls_out.sni;
        cutthrough.cipher =     tls_out.cipher;
        }

Now the ",hold" works. Thank you.