Apply the fix for widen_domains to qualify_single and search_parents
authorTony Finch <dot@dot.at>
Mon, 19 Sep 2005 09:41:37 +0000 (09:41 +0000)
committerTony Finch <dot@dot.at>
Mon, 19 Sep 2005 09:41:37 +0000 (09:41 +0000)
which are the other dnslookup options that can cause header rewrites.

doc/doc-txt/ChangeLog
src/src/routers/dnslookup.c

index 6c39998..3f2121c 100644 (file)
@@ -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
 -----------------
index aced237..9a9fba1 100644 (file)
@@ -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);