[exim-cvs] Debug output: regularise host lookup tracing

Top Page
Delete this message
Reply to this message
Author: Exim Git Commits Mailing List
Date:  
To: exim-cvs
Subject: [exim-cvs] Debug output: regularise host lookup tracing
Gitweb: https://git.exim.org/exim.git/commitdiff/261fc93208fb853e3f1ef78dd90a0b3d261e002f
Commit:     261fc93208fb853e3f1ef78dd90a0b3d261e002f
Parent:     4c7f095f4f32a2259017fa5acab6b1278af9e702
Author:     Jeremy Harris <jgh146exb@???>
AuthorDate: Mon Oct 5 15:28:10 2020 +0100
Committer:  Jeremy Harris <jgh146exb@???>
CommitDate: Mon Oct 5 16:57:12 2020 +0100


    Debug output: regularise host lookup tracing
---
 src/src/host.c   | 66 +++++++++++++++++++++++++++-----------------------------
 test/runtest     |  3 +++
 test/stderr/0388 |  2 --
 test/stderr/0398 |  3 ---
 test/stderr/0432 |  2 --
 test/stderr/2202 |  2 +-
 6 files changed, 36 insertions(+), 42 deletions(-)


diff --git a/src/src/host.c b/src/src/host.c
index 7408286..bb706c1 100644
--- a/src/src/host.c
+++ b/src/src/host.c
@@ -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
diff --git a/test/runtest b/test/runtest
index 5fb7cd7..7e9b5d7 100755
--- a/test/runtest
+++ b/test/runtest
@@ -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/;


diff --git a/test/stderr/0388 b/test/stderr/0388
index 468eae3..0b66b63 100644
--- a/test/stderr/0388
+++ b/test/stderr/0388
@@ -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
diff --git a/test/stderr/0398 b/test/stderr/0398
index ee9c91b..42893ad 100644
--- a/test/stderr/0398
+++ b/test/stderr/0398
@@ -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
diff --git a/test/stderr/0432 b/test/stderr/0432
index af0a540..164a604 100644
--- a/test/stderr/0432
+++ b/test/stderr/0432
@@ -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
diff --git a/test/stderr/2202 b/test/stderr/2202
index 2c595a6..e936b5e 100644
--- a/test/stderr/2202
+++ b/test/stderr/2202
@@ -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])