commit 3a23ded8a9048c791d17b7cc06e978412c4c4973
parent 3b6333ee3bb41ffb8165a098957014d84fe3d565
Author: Oliver Lowe <o@olowe.co>
Date: Tue, 14 Dec 2021 12:37:30 +1100
cmd/recursor: early return on authoritative flag
Because we have an authoritative answer, so that means it's time to
stop the lookup and return the result!
Diffstat:
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/cmd/recursor/recursor.go b/cmd/recursor/recursor.go
@@ -59,7 +59,7 @@ func resolve(q dnsmessage.Question, next []net.IP) (dnsmessage.Message, error) {
}
fmt.Fprintf(os.Stderr, "asking %s about %s\n", ip, q.Name)
rmsg, err = dns.Exchange(qmsg, ip2dial(ip))
- if rmsg.Header.RCode == dnsmessage.RCodeNameError {
+ if rmsg.Header.Authoritative {
return rmsg, err
} else if rmsg.Header.RCode == dnsmessage.RCodeSuccess && err == nil {
break
@@ -68,9 +68,6 @@ func resolve(q dnsmessage.Question, next []net.IP) (dnsmessage.Message, error) {
if err != nil {
return dnsmessage.Message{}, fmt.Errorf("resolve %s: %w", q.Name, err)
}
- if len(rmsg.Answers) > 0 {
- return rmsg, nil
- }
fmt.Fprintf(os.Stderr, "no answer for %s %s, checking additionals\n", q.Name, q.Type)
if len(rmsg.Additionals) > 0 {