From e2ce6804a76c771759603e3b3800a013275217a1 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sun, 7 Apr 2024 19:02:42 -0600 Subject: be authoritative, but only when there's no external queries occuring --- hcdns/server.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'hcdns/server.go') diff --git a/hcdns/server.go b/hcdns/server.go index e5a8d29..2e110e8 100644 --- a/hcdns/server.go +++ b/hcdns/server.go @@ -70,11 +70,12 @@ func (h *DnsHandler) recursiveResolve(domain string, qtype uint16, maxDepth int) answers = append(answers, cname) cnameRecursive, cnameAuth, err := h.resolveDNS(record.Content, qtype, maxDepth-1) + authoritative = authoritative && cnameAuth if err != nil { log.Println(err) return nil, authoritative, err } - authoritative = authoritative && cnameAuth + answers = append(answers, cnameRecursive...) } @@ -126,14 +127,16 @@ func (h *DnsHandler) resolveDNS(domain string, qtype uint16, maxDepth int) ([]dn continue } - cnameAnswers, _, err := h.resolveDNS(cname.Target, qtype, maxDepth-1) + cnameAnswers, cnameAuth, err := h.resolveDNS(cname.Target, qtype, maxDepth-1) + authoritative = authoritative && cnameAuth if err != nil { return nil, false, err } answers = append(answers, cnameAnswers...) } - return answers, false, nil + authoritative = authoritative && len(externalAnswers) == 0 + return answers, authoritative, nil } func (h *DnsHandler) ServeDNS(w dns.ResponseWriter, r *dns.Msg) { -- cgit v1.2.3-70-g09d2