Skip to content

Commit 8c8bd6f

Browse files
committed
dns/resolver: skip Goos fallback when in loopingback mod
1 parent 0efdd8b commit 8c8bd6f

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

intra/dnsx/transport.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,7 @@ func (r *resolver) LocalLookup(q []byte) ([]byte, string, error) {
463463
return nil, NoDNS, errResolverClosed
464464
}
465465

466+
loopingBack := settings.Loopingback.Load()
466467
defaultIsSystemDNS := false
467468
if dtr, _ := r.Get(x.StrOf(Default)); dtr != nil {
468469
// todo: a better way to determine whether Default is SystemDNS
@@ -472,13 +473,13 @@ func (r *resolver) LocalLookup(q []byte) ([]byte, string, error) {
472473

473474
// including dns64 and/or alg
474475
ans, tid, err := r.forward(q, protect.UidSelf, Default)
475-
if defaultIsSystemDNS {
476+
if !defaultIsSystemDNS || loopingBack {
476477
return ans, tid, err
477478
} // else: retry with Goos/System, if needed
478479

479480
// msg may be nil
480481
if msg := xdns.AsMsg(ans); err != nil || xdns.IsNXDomain(msg) || !xdns.HasRcodeSuccess(msg) {
481-
log.I("dns: nxdomain via Default (err? %v); using Goos for %s", err, xdns.QName(msg))
482+
log.I("dns: nxdomain via Default (err? %v); attempting Goos for %s", err, xdns.QName(msg))
482483
ans, tid, err = r.forward(q, protect.UidSelf, Goos) // Goos is System; see: determineTransport
483484
} // else: rcode success and nil err; do not fallback on Goos/System
484485

0 commit comments

Comments
 (0)