From a7fdad5bca2c6495f3181e29835eeef7670a567b Mon Sep 17 00:00:00 2001 From: Tony Finch Date: Mon, 19 Sep 2005 09:41:37 +0000 Subject: [PATCH] Apply the fix for widen_domains to qualify_single and search_parents which are the other dnslookup options that can cause header rewrites. --- doc/doc-txt/ChangeLog | 6 +++++- src/src/routers/dnslookup.c | 12 ++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/doc-txt/ChangeLog b/doc/doc-txt/ChangeLog index 6c39998b5..3f2121c1c 100644 --- a/doc/doc-txt/ChangeLog +++ b/doc/doc-txt/ChangeLog @@ -1,4 +1,4 @@ -$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.234 2005/09/16 14:44:11 ph10 Exp $ +$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.235 2005/09/19 09:41:37 fanf2 Exp $ Change log file for Exim from version 4.21 ------------------------------------------- @@ -203,6 +203,10 @@ PH/48 A number of further additions for the benefit of the new test suite, including a fake gethostbyname() that interfaces to the fake DNS resolver (see PH/47 above). +TF/06 The fix for widen_domains has also been applied to qualify_single and + search_parents which are the other dnslookup options that can cause + header rewrites. + Exim version 4.52 ----------------- diff --git a/src/src/routers/dnslookup.c b/src/src/routers/dnslookup.c index aced23747..9a9fba15a 100644 --- a/src/src/routers/dnslookup.c +++ b/src/src/routers/dnslookup.c @@ -1,4 +1,4 @@ -/* $Cambridge: exim/src/src/routers/dnslookup.c,v 1.6 2005/09/15 16:02:07 fanf2 Exp $ */ +/* $Cambridge: exim/src/src/routers/dnslookup.c,v 1.7 2005/09/19 09:41:37 fanf2 Exp $ */ /************************************************* * Exim - an Internet mail transport agent * @@ -253,10 +253,14 @@ for (;;) /* Unfortunately, we cannot set the mx_only option in advance, because the DNS lookup may extend an unqualified name. Therefore, we must do the test - subsequently. */ + subsequently. We use the same logic as that for widen_domains above to avoid + requesting a header rewrite that cannot work. */ - if (ob->qualify_single) flags |= HOST_FIND_QUALIFY_SINGLE; - if (ob->search_parents) flags |= HOST_FIND_SEARCH_PARENTS; + if (verify != v_sender || !ob->rewrite_headers || addr->parent != NULL) + { + if (ob->qualify_single) flags |= HOST_FIND_QUALIFY_SINGLE; + if (ob->search_parents) flags |= HOST_FIND_SEARCH_PARENTS; + } rc = host_find_bydns(&h, rblock->ignore_target_hosts, flags, srv_service, ob->srv_fail_domains, ob->mx_fail_domains, &fully_qualified_name, &removed); -- 2.30.2