From feaf5ca550fa7a5d9ce548314f344462ff2d6f40 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Mon, 27 Nov 2023 10:14:28 -0500 Subject: [PATCH] use proper stdlib functions for splitting host and port replace use of strings.Cut() with net.SplitHostPort() as it does not handle every case we need it to. e.g. "[1234::1%lan0]" --- src/types/resolver.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/types/resolver.go b/src/types/resolver.go index 246d116..e54102b 100644 --- a/src/types/resolver.go +++ b/src/types/resolver.go @@ -29,11 +29,13 @@ func NewNameResolver(stack *netstack.YggdrasilNetstack, nameserver string) *Name if nameserver == "" { return nil, fmt.Errorf("no nameserver configured") } - address, port, found := strings.Cut(nameserver, ":") - if !found { - port = "53" + host, port, err := net.SplitHostPort(nameserver) + if err != nil { + // default to dns service when no port given. + port = "dns" + host = nameserver } - address = net.JoinHostPort(nameserver, port) + address = net.JoinHostPort(host, port) return stack.DialContext(ctx, network, address) } }