Skip to content

Commit

Permalink
Pass unmatched queries on configured domain to recursive erver.
Browse files Browse the repository at this point in the history
  • Loading branch information
tcdent committed Sep 26, 2024
1 parent bfc25b1 commit 3798b73
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions agent/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -577,11 +577,20 @@ func (d *DNSServer) handleQuery(resp dns.ResponseWriter, req *dns.Msg) {

default:
err = d.dispatch(resp.RemoteAddr(), req, m, cfg, maxRecursionLevelDefault)
rCode := rCodeFromError(err)
if rCode == dns.RcodeNameError || errors.Is(err, errNoData) {
d.addSOAToMessage(cfg, m, q.Name)
if errors.Is(err, errNameNotFound) {
// Name matches the configured (root) domain, but doesn't match any nodes.
// Pass upstream to be handled by recursion server, if available.
if m.RecursionAvailable {
d.logger.Debug("request passed to recursor", "name", q.Name)
d.handleRecurse(resp, req)
}
} else {
rCode := rCodeFromError(err)
if rCode == dns.RcodeNameError || errors.Is(err, errNoData) {
d.addSOAToMessage(cfg, m, q.Name)
}
m.SetRcode(req, rCode)
}
m.SetRcode(req, rCode)
}

setEDNS(req, m, !errors.Is(err, errECSNotGlobal))
Expand Down

0 comments on commit 3798b73

Please sign in to comment.