From 42810015f96038f9d6486c9deeee84ea15f8cead Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Sun, 21 Jun 2026 13:31:52 +0800 Subject: [PATCH] fix: restore the original fallback concurrency behavior --- dns/resolver.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dns/resolver.go b/dns/resolver.go index 73a22997..0473a904 100644 --- a/dns/resolver.go +++ b/dns/resolver.go @@ -310,12 +310,13 @@ func (r *Resolver) ipExchange(ctx context.Context, m *D.Msg) (msg *D.Msg, err er msgCh := r.asyncExchange(ctx, r.main, m) - if r.fallback == nil || len(r.fallback) == 0 { // directly return if no fallback servers are available + if r.fallback == nil { // directly return if no fallback servers are available res := <-msgCh msg, err = res.Msg, res.Error return } + fallbackMsg := r.asyncExchange(ctx, r.fallback, m) res := <-msgCh if res.Error == nil { if ips := msgToIP(res.Msg); len(ips) != 0 { @@ -329,7 +330,7 @@ func (r *Resolver) ipExchange(ctx context.Context, m *D.Msg) (msg *D.Msg, err er } } - res = <-r.asyncExchange(ctx, r.fallback, m) + res = <-fallbackMsg msg, err = res.Msg, res.Error return }