Fix address sorting untidiness for the test suite.
authorPhilip Hazel <ph10@hermes.cam.ac.uk>
Fri, 17 Mar 2006 16:51:45 +0000 (16:51 +0000)
committerPhilip Hazel <ph10@hermes.cam.ac.uk>
Fri, 17 Mar 2006 16:51:45 +0000 (16:51 +0000)
doc/doc-txt/ChangeLog
src/src/host.c
test/confs/0366
test/confs/0455
test/confs/0499
test/runtest
test/stderr/0499
test/stdout/0467

index c70050d..ce3d142 100644 (file)
@@ -1,4 +1,4 @@
-$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.333 2006/03/17 09:39:00 ph10 Exp $
+$Cambridge: exim/doc/doc-txt/ChangeLog,v 1.334 2006/03/17 16:51:45 ph10 Exp $
 
 Change log file for Exim from version 4.21
 -------------------------------------------
@@ -323,6 +323,9 @@ PH/65 Added configuration files for NetBSD3.
 
 PH/66 Updated OS/Makefile-HP-UX for gcc 4.1.0 with HP-UX 11.
 
+PH/67 Fixed minor infelicity in the sorting of addresses to ensure that IPv6
+      is preferred over IPv4.
+
 
 Exim version 4.60
 -----------------
index 07d2839..01191f4 100644 (file)
@@ -1,4 +1,4 @@
-/* $Cambridge: exim/src/src/host.c,v 1.22 2006/02/16 10:05:33 ph10 Exp $ */
+/* $Cambridge: exim/src/src/host.c,v 1.23 2006/03/17 16:51:45 ph10 Exp $ */
 
 /*************************************************
 *     Exim - an Internet mail transport agent    *
@@ -2876,17 +2876,19 @@ single MX preference value, IPv6 addresses come first. This can separate the
 addresses of a multihomed host, but that should not matter. */
 
 #if HAVE_IPV6
-if (h != last)
+if (h != last && !disable_ipv6)
   {
   for (h = host; h != last; h = h->next)
     {
     host_item temp;
     host_item *next = h->next;
-    if (h->mx != next->mx ||                /* If next is different MX value */
-        (h->sort_key % 1000) < 500 ||       /* OR this one is IPv6 */
-        (next->sort_key % 1000) >= 500)     /* OR next is IPv4 */
-      continue;                             /* move on to next */
-    temp = *h;
+    if (h->mx != next->mx ||                   /* If next is different MX */
+        h->address == NULL ||                  /* OR this one is unset */
+        Ustrchr(h->address, ':') != NULL ||    /* OR this one is IPv6 */
+        (next->address != NULL &&
+         Ustrchr(next->address, ':') == NULL)) /* OR next is IPv4 */
+      continue;                                /* move on to next */
+    temp = *h;                                 /* otherwise, swap */
     temp.next = next->next;
     *h = *next;
     h->next = next;
index 62fdda1..930b646 100644 (file)
@@ -14,6 +14,7 @@ gecos_name = CALLER_NAME
 
 ignore_bounce_errors_after = 0s
 qualify_domain = test.ex
+disable_ipv6
 
 # ----- Routers -----
 
index eb6982f..14e4161 100644 (file)
@@ -16,6 +16,7 @@ acl_not_smtp = non
 
 ignore_bounce_errors_after = 0s
 qualify_domain = test.ex
+disable_ipv6
 
 
 # ----- ACLs -----
index 18364b7..ada9e8a 100644 (file)
@@ -12,6 +12,7 @@ gecos_name = CALLER_NAME
 # ----- Main settings -----
 
 domainlist anymx = @mx_any
+disable_ipv6
 
 
 # ----- Routers -----
index 699030b..76cc4b9 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl -w
 
-# $Cambridge: exim/test/runtest,v 1.5 2006/02/16 14:34:42 ph10 Exp $
+# $Cambridge: exim/test/runtest,v 1.6 2006/03/17 16:51:45 ph10 Exp $
 
 ###############################################################################
 # This is the controlling script for the "new" test suite for Exim. It should #
@@ -648,9 +648,11 @@ while(<IN>)
 
   if ($is_stdout)
     {
-    # Skip translate_ip_address in -bP output because it ain't always there
+    # Skip translate_ip_address and use_classresources in -bP output because
+    # they aren't always there.
 
     next if /translate_ip_address =/;
+    next if /use_classresources/;
 
     # In certain filter tests, remove initial filter lines because they just
     # clog up by repetition.
index 47a8229..13b4d4f 100644 (file)
@@ -27,7 +27,6 @@ mxt1.test.ex in "+anymx"? yes (matched "+anymx")
 checking "condition"
 DNS lookup of mxt1.test.ex (MX) using fakens
 DNS lookup of mxt1.test.ex (MX) succeeded
-DNS lookup of eximtesthost.test.ex-AAAA: using cached value DNS_NODATA
 DNS lookup of eximtesthost.test.ex (A) using fakens
 DNS lookup of eximtesthost.test.ex (A) succeeded
 local host has lowest MX
index 60ffdae..d9c2026 100644 (file)
@@ -5,8 +5,8 @@ x@srv01.test.ex
   host ten-1.test.ex [V4NET.0.0.1] MX=0 port=25
 x@mx246.test.ex
   router = r1, transport = t1
-  host v6.test.ex [unknown] MX=10 ** unusable **
   host ten-1.test.ex [V4NET.0.0.1] MX=10
+  host v6.test.ex [unknown] MX=10 ** unusable **
 x@srv02.test.ex
   router = r1, transport = t1
   host ten-1.test.ex [V4NET.0.0.1] MX=1 port=99