[exim] exim 4.52: bug in quote_smtp_domains

Top Page
Delete this message
Reply to this message
Author: Mrten
Date:  
To: exim-users
Subject: [exim] exim 4.52: bug in quote_smtp_domains
hi,

[copy of message sent to philip, with extra info added and non-reverse
patch :)]

today we've tracked down a bug in the handling of queue_smtp_domains,
in exim 4.52:

the manual states that it's an expanded domainlist, but after lots of
trying today i found that i really didnt behave like one :) single
domains worked, but domainlists like

8< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >8
domainlist known_domains = [host]:[host]
queue_smtp_domains = !+known_domains
8< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >8

never seemed to produce a match, not positively nor negatively.

so we dove into the code; and we discoved a smallish bug in
transports/smtp.c for which we provide a patch here:

[s001 exim-4.52-ok]$ diff -Nru6 ../exim-4.52/src/transports/smtp.c src/transports/smtp.c
--- ../exim-4.52/src/transports/smtp.c  Fri Jul  1 13:09:15 2005
+++ src/transports/smtp.c       Tue Jul 26 18:48:42 2005
@@ -2314,13 +2314,13 @@
     deliveries. When doing a queue run, queue_smtp_domains is always unset. If
     there is a lookup defer in queue_smtp_domains, proceed as if the domain
     were not in it. We don't want to hold up all SMTP deliveries! Except when
     doing a two-stage queue run, don't do this if forcing. */


     if ((!deliver_force || queue_2stage) && (queue_smtp ||
-        match_isinlist(addrlist->domain, &queue_smtp_domains, 0, NULL, NULL,
+        match_isinlist(addrlist->domain, &queue_smtp_domains, 0, &domainlist_anchor, NULL,
           MCL_DOMAIN, TRUE, NULL) == OK))
       {
       expired = FALSE;
       for (addr = addrlist; addr != NULL; addr = addr->next)
         {
         if (addr->transport_return != DEFER) continue;


with this fix exim works just fine regarding queue_smtp_domains!

however, there is a snag, but i do not know whether it is related;
exim crashes sometimes with signal 11. this is from the paniclog:

2005-07-27 11:05:12 1Dxhne-00071w-JO failed to read delivery status for ...@....nl from delivery subprocess
2005-07-27 11:05:12 1Dxhne-00071w-JO appendfile transport process returned non-zero status 0x000b: terminated by signal 11
2005-07-27 11:05:12 1Dxhqi-0007LD-GN failed to read delivery status for \0\...@....nl from delivery subprocess
2005-07-27 11:05:12 1Dxhqi-0007LD-GN appendfile transport process returned non-zero status 0x000b: terminated by signal 11

(the dots were real mailaddresses)

no core that i could find, sorry.

i've recompiled (make clean && make), just to be sure, haven't seen
the crash again until now, but i thought i'd mention it anyway.

thanks,
Mrten.
--
I don't mind going nowhere, as long as it's an interesting path.