mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Insert all DNSKEY/DS records into cache in one transaction.
This commit is contained in:
committed by
Simon Kelley
parent
ccca70cb33
commit
d0edff7d6e
@@ -323,7 +323,6 @@ int dnssec_parsekey(struct dns_header *header, size_t pktlen, char *owner, unsig
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
cache_start_insert();
|
|
||||||
/* TODO: time(0) is correct here? */
|
/* TODO: time(0) is correct here? */
|
||||||
crecp = cache_insert(owner, NULL, time(0), ttl, F_FORWARD | F_DNSKEY);
|
crecp = cache_insert(owner, NULL, time(0), ttl, F_FORWARD | F_DNSKEY);
|
||||||
if (crecp)
|
if (crecp)
|
||||||
@@ -343,7 +342,6 @@ int dnssec_parsekey(struct dns_header *header, size_t pktlen, char *owner, unsig
|
|||||||
printf("DNSKEY: cache insertion failure\n");
|
printf("DNSKEY: cache insertion failure\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
cache_end_insert();
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,6 +362,9 @@ int dnssec_validate(struct dns_header *header, size_t pktlen)
|
|||||||
return 0;
|
return 0;
|
||||||
if (!(reply = p = skip_questions(header, pktlen)))
|
if (!(reply = p = skip_questions(header, pktlen)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
/* First, process DNSKEY/DS records and add them to the cache. */
|
||||||
|
cache_start_insert();
|
||||||
for (i = 0; i < ntohs(header->ancount); i++)
|
for (i = 0; i < ntohs(header->ancount); i++)
|
||||||
{
|
{
|
||||||
if (!extract_name(header, pktlen, &p, owner, 1, 10))
|
if (!extract_name(header, pktlen, &p, owner, 1, 10))
|
||||||
@@ -384,8 +385,9 @@ int dnssec_validate(struct dns_header *header, size_t pktlen)
|
|||||||
}
|
}
|
||||||
p += rdlen;
|
p += rdlen;
|
||||||
}
|
}
|
||||||
|
cache_end_insert();
|
||||||
|
|
||||||
/* After we have parsed DNSKEY/DS records, start looking for RRSIGs.
|
/* After we have cached DNSKEY/DS records, start looking for RRSIGs.
|
||||||
We want to do this in a separate step because we want the cache
|
We want to do this in a separate step because we want the cache
|
||||||
to be already populated with DNSKEYs before parsing signatures. */
|
to be already populated with DNSKEYs before parsing signatures. */
|
||||||
p = reply;
|
p = reply;
|
||||||
|
|||||||
Reference in New Issue
Block a user