From ec08e44fcbfeca91cdaab324638db86a77eb55bb Mon Sep 17 00:00:00 2001 From: pommee Date: Thu, 2 Oct 2025 21:20:05 +0200 Subject: [PATCH] fix: respect port set for upstream over dot query --- backend/dns/server/handler.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/backend/dns/server/handler.go b/backend/dns/server/handler.go index b190eff..020d17c 100644 --- a/backend/dns/server/handler.go +++ b/backend/dns/server/handler.go @@ -656,12 +656,14 @@ func (s *DNSServer) QueryUpstream(req *Request) ([]dns.RR, uint32, string) { upstreamMsg.Id = dns.Id() upstream := s.Config.DNS.PreferredUpstream - if s.dnsClient.Net == "tcp-tls" && !strings.HasSuffix(upstream, ":853") { - host, _, err := net.SplitHostPort(upstream) - if err == nil { - upstream = net.JoinHostPort(host, "853") + if s.dnsClient.Net == "tcp-tls" { + if !strings.Contains(upstream, ":") { + upstream = net.JoinHostPort(upstream, "853") + } else if strings.Contains(upstream, ":53") { + upstream = strings.ReplaceAll(upstream, ":53", ":853") } } + in, _, err := s.dnsClient.Exchange(upstreamMsg, upstream) if err != nil { errCh <- err