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])