123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- From 6f7812d97bc8f87004c0a5069c6c94c64af78106 Mon Sep 17 00:00:00 2001
- From: Simon Kelley <simon@thekelleys.org.uk>
- Date: Tue, 23 Oct 2018 23:54:44 +0100
- Subject: [PATCH 06/32] Fix spurious AD flags in some DNS replies from local
- config.
- Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
- ---
- src/rfc1035.c | 42 ++++++++++++++++++++++++------------------
- 1 file changed, 24 insertions(+), 18 deletions(-)
- --- a/src/rfc1035.c
- +++ b/src/rfc1035.c
- @@ -1330,7 +1330,7 @@ size_t answer_request(struct dns_header
- {
- if (t->class == qclass && hostname_isequal(name, t->name))
- {
- - ans = 1;
- + ans = 1, sec_data = 0;
- if (!dryrun)
- {
- unsigned long ttl = daemon->local_ttl;
- @@ -1370,7 +1370,7 @@ size_t answer_request(struct dns_header
- addr.addr.rcode.rcode = NOTIMP;
- log_query(F_CONFIG | F_RCODE, name, &addr, NULL);
- }
- - ans = 1;
- + ans = 1, sec_data = 0;
- }
- }
- }
- @@ -1725,7 +1725,7 @@ size_t answer_request(struct dns_header
- }
- else if (is_name_synthetic(flag, name, &addr))
- {
- - ans = 1;
- + ans = 1, sec_data = 0;
- if (!dryrun)
- {
- log_query(F_FORWARD | F_CONFIG | flag, name, &addr, NULL);
- @@ -1763,25 +1763,27 @@ size_t answer_request(struct dns_header
- for (rec = daemon->mxnames; rec; rec = rec->next)
- if (!rec->issrv && hostname_isequal(name, rec->name))
- {
- - ans = found = 1;
- - if (!dryrun)
- - {
- - int offset;
- - log_query(F_CONFIG | F_RRNAME, name, NULL, "<MX>");
- - if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl,
- - &offset, T_MX, C_IN, "sd", rec->weight, rec->target))
- - {
- - anscount++;
- - if (rec->target)
- - rec->offset = offset;
- - }
- - }
- + ans = found = 1;
- + sec_data = 0;
- + if (!dryrun)
- + {
- + int offset;
- + log_query(F_CONFIG | F_RRNAME, name, NULL, "<MX>");
- + if (add_resource_record(header, limit, &trunc, nameoffset, &ansp, daemon->local_ttl,
- + &offset, T_MX, C_IN, "sd", rec->weight, rec->target))
- + {
- + anscount++;
- + if (rec->target)
- + rec->offset = offset;
- + }
- + }
- }
-
- if (!found && (option_bool(OPT_SELFMX) || option_bool(OPT_LOCALMX)) &&
- cache_find_by_name(NULL, name, now, F_HOSTS | F_DHCP | F_NO_RR))
- {
- ans = 1;
- + sec_data = 0;
- if (!dryrun)
- {
- log_query(F_CONFIG | F_RRNAME, name, NULL, "<MX>");
- @@ -1802,6 +1804,7 @@ size_t answer_request(struct dns_header
- if (rec->issrv && hostname_isequal(name, rec->name))
- {
- found = ans = 1;
- + sec_data = 0;
- if (!dryrun)
- {
- int offset;
- @@ -1838,6 +1841,7 @@ size_t answer_request(struct dns_header
- if (!found && option_bool(OPT_FILTER) && (qtype == T_SRV || (qtype == T_ANY && strchr(name, '_'))))
- {
- ans = 1;
- + sec_data = 0;
- if (!dryrun)
- log_query(F_CONFIG | F_NEG, name, NULL, NULL);
- }
- @@ -1850,6 +1854,7 @@ size_t answer_request(struct dns_header
- if (hostname_isequal(name, na->name))
- {
- ans = 1;
- + sec_data = 0;
- if (!dryrun)
- {
- log_query(F_CONFIG | F_RRNAME, name, NULL, "<NAPTR>");
- @@ -1862,11 +1867,12 @@ size_t answer_request(struct dns_header
- }
-
- if (qtype == T_MAILB)
- - ans = 1, nxdomain = 1;
- + ans = 1, nxdomain = 1, sec_data = 0;
-
- if (qtype == T_SOA && option_bool(OPT_FILTER))
- {
- - ans = 1;
- + ans = 1;
- + sec_data = 0;
- if (!dryrun)
- log_query(F_CONFIG | F_NEG, name, &addr, NULL);
- }
|