From b8c46e2654400c99a0c6f2da0be2ce478d4bc1c4 Mon Sep 17 00:00:00 2001 From: Maycon Santos Date: Fri, 1 Dec 2023 14:26:42 +0100 Subject: [PATCH] Fix IPv6 format for DNS address received from android (#1350) this adds the address in the expected format in Go [ipv6]:port --- client/internal/dns/server.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/client/internal/dns/server.go b/client/internal/dns/server.go index 9bb9a76a9..f984f02ec 100644 --- a/client/internal/dns/server.go +++ b/client/internal/dns/server.go @@ -488,7 +488,18 @@ func (s *DefaultServer) addHostRootZone() { handler := newUpstreamResolver(s.ctx) handler.upstreamServers = make([]string, len(s.hostsDnsList)) for n, ua := range s.hostsDnsList { - handler.upstreamServers[n] = fmt.Sprintf("%s:53", ua) + a, err := netip.ParseAddr(ua) + if err != nil { + log.Errorf("invalid upstream IP address: %s, error: %s", ua, err) + continue + } + + ipString := ua + if !a.Is4() { + ipString = fmt.Sprintf("[%s]", ua) + } + + handler.upstreamServers[n] = fmt.Sprintf("%s:53", ipString) } handler.deactivate = func() {} handler.reactivate = func() {}