mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 18:28:25 +00:00
AD bit in queries handled as RFC6840 p5.7
This commit is contained in:
@@ -249,9 +249,6 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
|
|||||||
#endif
|
#endif
|
||||||
unsigned int gotname = extract_request(header, plen, daemon->namebuff, NULL);
|
unsigned int gotname = extract_request(header, plen, daemon->namebuff, NULL);
|
||||||
|
|
||||||
/* RFC 4035: sect 4.6 para 2 */
|
|
||||||
header->hb4 &= ~HB4_AD;
|
|
||||||
|
|
||||||
/* may be no servers available. */
|
/* may be no servers available. */
|
||||||
if (!daemon->servers)
|
if (!daemon->servers)
|
||||||
forward = NULL;
|
forward = NULL;
|
||||||
@@ -1283,9 +1280,6 @@ unsigned char *tcp_request(int confd, time_t now,
|
|||||||
if ((checking_disabled = header->hb4 & HB4_CD))
|
if ((checking_disabled = header->hb4 & HB4_CD))
|
||||||
no_cache_dnssec = 1;
|
no_cache_dnssec = 1;
|
||||||
|
|
||||||
/* RFC 4035: sect 4.6 para 2 */
|
|
||||||
header->hb4 &= ~HB4_AD;
|
|
||||||
|
|
||||||
if ((gotname = extract_request(header, (unsigned int)size, daemon->namebuff, &qtype)))
|
if ((gotname = extract_request(header, (unsigned int)size, daemon->namebuff, &qtype)))
|
||||||
{
|
{
|
||||||
#ifdef HAVE_AUTH
|
#ifdef HAVE_AUTH
|
||||||
|
|||||||
@@ -1468,7 +1468,7 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
|
|||||||
struct mx_srv_record *rec;
|
struct mx_srv_record *rec;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
/* Don't return AD set even for local data if checking disabled. */
|
/* Don't return AD set if checking disabled. */
|
||||||
if (header->hb4 & HB4_CD)
|
if (header->hb4 & HB4_CD)
|
||||||
sec_data = 0;
|
sec_data = 0;
|
||||||
|
|
||||||
@@ -2261,16 +2261,19 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
|
|||||||
header->nscount = htons(0);
|
header->nscount = htons(0);
|
||||||
header->arcount = htons(addncount);
|
header->arcount = htons(addncount);
|
||||||
|
|
||||||
|
/* RFC 6840 5.7 */
|
||||||
|
if (header->hb4 & HB4_AD)
|
||||||
|
sec_reqd = 1;
|
||||||
|
|
||||||
header->hb4 &= ~HB4_AD;
|
header->hb4 &= ~HB4_AD;
|
||||||
|
|
||||||
len = ansp - (unsigned char *)header;
|
len = ansp - (unsigned char *)header;
|
||||||
|
|
||||||
if (have_pseudoheader)
|
if (have_pseudoheader)
|
||||||
{
|
len = add_pseudoheader(header, len, (unsigned char *)limit, 0, NULL, 0, sec_reqd);
|
||||||
len = add_pseudoheader(header, len, (unsigned char *)limit, 0, NULL, 0, sec_reqd);
|
|
||||||
if (sec_reqd && sec_data)
|
|
||||||
header->hb4 |= HB4_AD;
|
|
||||||
|
|
||||||
}
|
if (sec_reqd && sec_data)
|
||||||
|
header->hb4 |= HB4_AD;
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user