summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/src/dns.c18
-rw-r--r--src/src/functions.h2
-rw-r--r--src/src/verify.c2
3 files changed, 11 insertions, 11 deletions
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;
}