From a713f76692228165883d92875fbad3bfb89c001e Mon Sep 17 00:00:00 2001 From: Jeremy Harris Date: Sun, 27 Oct 2019 20:44:20 +0000 Subject: DNS: tag res_search() hack by lookup type in debug output; munge ipv6 lines in testsuite --- src/src/dns.c | 18 +++++++++--------- src/src/functions.h | 2 +- src/src/verify.c | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/src/dns.c b/src/src/dns.c index 28bc5958d..7736a2204 100644 --- a/src/src/dns.c +++ b/src/src/dns.c @@ -693,7 +693,7 @@ success and packet length return values.) For added safety we only reset the packet length if the packet header looks plausible. */ static void -fake_dnsa_len_for_fail(dns_answer * dnsa) +fake_dnsa_len_for_fail(dns_answer * dnsa, int type) { const HEADER * h = (const HEADER *)dnsa->answer; @@ -706,8 +706,8 @@ if ( h->qr == 1 /* a response */ && ntohs(h->ancount) == 0 /* no answer records */ && ntohs(h->nscount) >= 1) /* authority records */ { - DEBUG(D_dns) debug_printf("faking res_search() response length as %d\n", - (int)sizeof(dnsa->answer)); + DEBUG(D_dns) debug_printf("faking res_search(%s) response length as %d\n", + dns_text_type(type), (int)sizeof(dnsa->answer)); dnsa->answerlen = sizeof(dnsa->answer); } } @@ -719,11 +719,11 @@ bother doing a separate lookup; if not found return a forever TTL. */ time_t -dns_expire_from_soa(dns_answer * dnsa) +dns_expire_from_soa(dns_answer * dnsa, int type) { dns_scan dnss; -fake_dnsa_len_for_fail(dnsa); +fake_dnsa_len_for_fail(dnsa, type); for (dns_record * rr = dns_next_rr(dnsa, &dnss, RESET_AUTHORITY); rr; rr = dns_next_rr(dnsa, &dnss, RESET_NEXT) @@ -893,7 +893,7 @@ if (dnsa->answerlen < 0) switch (h_errno) case HOST_NOT_FOUND: DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave HOST_NOT_FOUND\n" "returning DNS_NOMATCH\n", name, dns_text_type(type)); - return dns_fail_return(name, type, dns_expire_from_soa(dnsa), DNS_NOMATCH); + return dns_fail_return(name, type, dns_expire_from_soa(dnsa, type), DNS_NOMATCH); case TRY_AGAIN: DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave TRY_AGAIN\n", @@ -913,7 +913,7 @@ if (dnsa->answerlen < 0) switch (h_errno) } DEBUG(D_dns) debug_printf("%s is in dns_again_means_nonexist: returning " "DNS_NOMATCH\n", name); - return dns_fail_return(name, type, dns_expire_from_soa(dnsa), DNS_NOMATCH); + return dns_fail_return(name, type, dns_expire_from_soa(dnsa, type), DNS_NOMATCH); #else /* For stand-alone tests */ return dns_fail_return(name, type, 0, DNS_AGAIN); @@ -927,7 +927,7 @@ if (dnsa->answerlen < 0) switch (h_errno) case NO_DATA: DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave NO_DATA\n" "returning DNS_NODATA\n", name, dns_text_type(type)); - return dns_fail_return(name, type, dns_expire_from_soa(dnsa), DNS_NODATA); + return dns_fail_return(name, type, dns_expire_from_soa(dnsa, type), DNS_NODATA); default: DEBUG(D_dns) debug_printf("DNS lookup of %s (%s) gave unknown DNS error %d\n" @@ -1200,7 +1200,7 @@ switch (type) if (rc == DNS_NOMATCH) { - fake_dnsa_len_for_fail(dnsa); + fake_dnsa_len_for_fail(dnsa, T_CSA); for (rr = dns_next_rr(dnsa, &dnss, RESET_AUTHORITY); rr; rr = dns_next_rr(dnsa, &dnss, RESET_NEXT) diff --git a/src/src/functions.h b/src/src/functions.h index 3b3a12b18..35f8b6c83 100644 --- a/src/src/functions.h +++ b/src/src/functions.h @@ -198,7 +198,7 @@ extern BOOL dkim_transport_write_message(transport_ctx *, extern dns_address *dns_address_from_rr(dns_answer *, dns_record *); extern int dns_basic_lookup(dns_answer *, const uschar *, int); extern void dns_build_reverse(const uschar *, uschar *); -extern time_t dns_expire_from_soa(dns_answer *); +extern time_t dns_expire_from_soa(dns_answer *, int); extern void dns_init(BOOL, BOOL, BOOL); extern BOOL dns_is_aa(const dns_answer *); extern BOOL dns_is_secure(const dns_answer *); diff --git a/src/src/verify.c b/src/src/verify.c index 384739b2b..fc8cd84ea 100644 --- a/src/src/verify.c +++ b/src/src/verify.c @@ -3478,7 +3478,7 @@ else dns_basic_lookup(), we have a dnslist cache entry allocated and tree-inserted. So we may as well use it. */ - time_t soa_negttl = dns_expire_from_soa(dnsa); + time_t soa_negttl = dns_expire_from_soa(dnsa, T_A); cb->expiry = soa_negttl ? soa_negttl : time(NULL) + ttl; break; } -- cgit v1.2.3