Debug output: regularise host lookup tracing
authorJeremy Harris <jgh146exb@wizmail.org>
Mon, 5 Oct 2020 14:28:10 +0000 (15:28 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Mon, 5 Oct 2020 15:57:12 +0000 (16:57 +0100)
src/src/host.c
test/runtest
test/stderr/0388
test/stderr/0398
test/stderr/0432
test/stderr/2202

index 7408286ec2b2ce8001e16980bb267ee219484355..bb706c1c86eb53b16a24cfd74539c7cacccc9497 100644 (file)
@@ -1974,10 +1974,10 @@ lookups here (except when testing standalone). */
   #ifdef STAND_ALONE
   if (disable_ipv6)
   #else
-  if (disable_ipv6 ||
-    (dns_ipv4_lookup != NULL &&
-        match_isinlist(host->name, CUSS &dns_ipv4_lookup, 0, NULL, NULL,
-         MCL_DOMAIN, TRUE, NULL) == OK))
+  if (  disable_ipv6
+     ||    dns_ipv4_lookup
+       && match_isinlist(host->name, CUSS &dns_ipv4_lookup, 0, NULL, NULL,
+           MCL_DOMAIN, TRUE, NULL) == OK)
   #endif
 
     { af = AF_INET; times = 1; }
@@ -1987,7 +1987,7 @@ lookups here (except when testing standalone). */
 /* No IPv6 support */
 
 #else   /* HAVE_IPV6 */
-  times = 1;
+  af = AF_INET; times = 1;
 #endif  /* HAVE_IPV6 */
 
 /* Initialize the flag that gets set for DNS syntax check errors, so that the
@@ -2029,7 +2029,7 @@ for (int i = 1; i <= times;
 
   #else    /* not HAVE_IPV6 */
   if (f.running_in_test_harness)
-    hostdata = host_fake_gethostbyname(host->name, AF_INET, &error_num);
+    hostdata = host_fake_gethostbyname(host->name, af, &error_num);
   else
     {
     hostdata = gethostbyname(CS host->name);
@@ -2043,44 +2043,42 @@ for (int i = 1; i <= times;
 
   if (!hostdata)
     {
-    uschar *error;
+    uschar * error;
     switch (error_num)
       {
-      case HOST_NOT_FOUND: error = US"HOST_NOT_FOUND"; break;
-      case TRY_AGAIN:      error = US"TRY_AGAIN"; break;
-      case NO_RECOVERY:    error = US"NO_RECOVERY"; break;
-      case NO_DATA:        error = US"NO_DATA"; break;
+      case HOST_NOT_FOUND: error = US"HOST_NOT_FOUND"; break;
+      case TRY_AGAIN:      error = US"TRY_AGAIN";   temp_error = TRUE; break;
+      case NO_RECOVERY:    error = US"NO_RECOVERY"; temp_error = TRUE; break;
+      case NO_DATA:        error = US"NO_DATA";                break;
     #if NO_DATA != NO_ADDRESS
-      case NO_ADDRESS:     error = US"NO_ADDRESS"; break;
+      case NO_ADDRESS:     error = US"NO_ADDRESS";     break;
     #endif
       default: error = US"?"; break;
       }
 
-    DEBUG(D_host_lookup) debug_printf("%s returned %d (%s)\n",
+    DEBUG(D_host_lookup) debug_printf("%s(af=%s) returned %d (%s)\n",
       f.running_in_test_harness ? "host_fake_gethostbyname" :
-      #if HAVE_IPV6
-        #if HAVE_GETIPNODEBYNAME
-        af == AF_INET6 ? "getipnodebyname(af=inet6)" : "getipnodebyname(af=inet)",
-        #else
-        af == AF_INET6 ? "gethostbyname2(af=inet6)" : "gethostbyname2(af=inet)",
-        #endif
-      #else
-      "gethostbyname",
-      #endif
-      error_num, error);
+#if HAVE_IPV6
+if HAVE_GETIPNODEBYNAME
+        "getipnodebyname",
+else
+        "gethostbyname2",
+endif
+#else
+       "gethostbyname",
+#endif
+      af == AF_INET ? "inet" : "inet6", error_num, error);
 
-    if (error_num == TRY_AGAIN || error_num == NO_RECOVERY) temp_error = TRUE;
     continue;
     }
-  if ((hostdata->h_addr_list)[0] == NULL) continue;
+  if (!(hostdata->h_addr_list)[0]) continue;
 
   /* Replace the name with the fully qualified one if necessary, and fill in
   the fully_qualified_name pointer. */
 
-  if (hostdata->h_name[0] != 0 &&
-      Ustrcmp(host->name, hostdata->h_name) != 0)
+  if (hostdata->h_name[0] && Ustrcmp(host->name, hostdata->h_name) != 0)
     host->name = string_copy_dnsdomain(US hostdata->h_name);
-  if (fully_qualified_name != NULL) *fully_qualified_name = host->name;
+  if (fully_qualified_name) *fully_qualified_name = host->name;
 
   /* Get the list of addresses. IPv4 and IPv6 addresses can be distinguished
   by their different lengths. Scan the list, ignoring any that are to be
@@ -2094,9 +2092,9 @@ for (int i = 1; i <= times;
       host_ntoa(ipv4_addr? AF_INET:AF_INET6, *addrlist, NULL, NULL);
 
     #ifndef STAND_ALONE
-    if (ignore_target_hosts != NULL &&
-        verify_check_this_host(&ignore_target_hosts, NULL, host->name,
-          text_address, NULL) == OK)
+    if (  ignore_target_hosts
+       && verify_check_this_host(&ignore_target_hosts, NULL, host->name,
+           text_address, NULL) == OK)
       {
       DEBUG(D_host_lookup)
         debug_printf("ignored host %s [%s]\n", host->name, text_address);
@@ -2104,10 +2102,10 @@ for (int i = 1; i <= times;
       }
     #endif
 
-    /* If this is the first address, last == NULL and we put the data in the
+    /* If this is the first address, last is NULL and we put the data in the
     original block. */
 
-    if (last == NULL)
+    if (!last)
       {
       host->address = text_address;
       host->port = PORT_NONE;
@@ -2149,7 +2147,7 @@ if (!host->address)
   {
   uschar *msg =
     #ifndef STAND_ALONE
-    message_id[0] == 0 && smtp_in
+    !message_id[0] && smtp_in
       ? string_sprintf("no IP address found for host %s (during %s)", host->name,
           smtp_get_connection_info()) :
     #endif
index 5fb7cd737f8d29ce3d752801e75026d327ddd6fa..7e9b5d74c0fe1a3c4413b7ee8299a9ec85396f39 100755 (executable)
@@ -1047,6 +1047,9 @@ RESET_AFTER_EXTRA_LINE_READ:
 
     s/\b(gethostbyname2?|\bgetipnodebyname)(\(af=inet\))?/get[host|ipnode]byname[2]/;
 
+    # Extra lookups done when ipv6 is supported
+    next if /^host_fake_gethostbyname\(af=inet6\) returned 1 \(HOST_NOT_FOUND\)$/;
+
     # we don't care what TZ enviroment the testhost was running
     next if /^Reset TZ to/;
 
index 468eae32d10dcc5122b78ca2e7e9c9a4911efa7e..0b66b639cee7e398b75e59dd9f7f11c1737f276f 100644 (file)
@@ -38,7 +38,6 @@ expanded list of hosts = '127.0.0.1 : V4NET.0.0.0' options = ''
 set transport smtp
 finding IP address for 127.0.0.1
 calling host_find_byname
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for 127.0.0.1 (IPv4)
 local host found for non-MX address
 fully qualified name = 127.0.0.1
@@ -48,7 +47,6 @@ get[host|ipnode]byname[2] looked up these IP addresses:
 remote host address is the local host: y: configured to try delivery anyway
 finding IP address for V4NET.0.0.0
 calling host_find_byname
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for V4NET.0.0.0 (IPv4)
 fully qualified name = V4NET.0.0.0
 MUNGED: ::1 will be omitted in what follows
index ee9c91bed0f221c9593f804283ab17f8d9a9d93b..42893ad6a52c68f2e42313b344d90667f38ecb62 100644 (file)
@@ -52,7 +52,6 @@ expanded list of hosts = '127.0.0.1' options = ''
 set transport t2
 finding IP address for 127.0.0.1
 calling host_find_byname
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for 127.0.0.1 (IPv4)
 local host found for non-MX address
 fully qualified name = 127.0.0.1
@@ -101,7 +100,6 @@ original list of hosts = '127.0.0.1' options = ''
 expanded list of hosts = '127.0.0.1' options = ''
 finding IP address for 127.0.0.1
 calling host_find_byname
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for 127.0.0.1 (IPv4)
 local host found for non-MX address
 fully qualified name = 127.0.0.1
@@ -215,7 +213,6 @@ original list of hosts = '127.0.0.1' options = ''
 expanded list of hosts = '127.0.0.1' options = ''
 finding IP address for 127.0.0.1
 calling host_find_byname
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for 127.0.0.1 (IPv4)
 local host found for non-MX address
 fully qualified name = 127.0.0.1
index af0a540a47c45ea20dec30dc1f1281c3896b5ce9..164a60473cc2ae3908f6e222112863244fbca26a 100644 (file)
@@ -72,7 +72,6 @@ domain = y
 routed by r1 router
   envelope to: x@y
   transport: t1
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for 127.0.0.1 (IPv4)
 local host found for non-MX address
 MUNGED: ::1 will be omitted in what follows
@@ -183,7 +182,6 @@ domain = y
 routed by r1 router
   envelope to: x@y
   transport: t1
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
 using host_fake_gethostbyname for 127.0.0.1 (IPv4)
 local host found for non-MX address
 MUNGED: ::1 will be omitted in what follows
index 2c595a6dd9d824f90cc87c4a85cbaa13a082eaf7..e936b5e6b430125a7bb04b5ca4975b2c99ba750b 100644 (file)
@@ -67,7 +67,7 @@ cioce.test.again.dns in dns_again_means_nonexist? yes (matched "*")
 cioce.test.again.dns is in dns_again_means_nonexist: returning DNS_NOMATCH
 DNS: no SOA record found for neg-TTL
  writing neg-cache entry for cioce.test.again.dns-A-xxxx, ttl -1
-host_fake_gethostbyname returned 1 (HOST_NOT_FOUND)
+host_fake_gethostbyname(af=inet) returned 1 (HOST_NOT_FOUND)
 no IP address found for host cioce.test.again.dns (during SMTP connection from the.local.host.name [ip4.ip4.ip4.ip4])
 LOG: host_lookup_failed MAIN
   no IP address found for host cioce.test.again.dns (during SMTP connection from the.local.host.name [ip4.ip4.ip4.ip4])