From d321190578c3c4a1710b36b1cebb269fbb5fac92 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 24 Mar 2020 13:40:43 -0700 Subject: [PATCH] wgengine/magicsock: stringify [IPv6]:port normally in AddrSet.String --- wgengine/magicsock/magicsock.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/wgengine/magicsock/magicsock.go b/wgengine/magicsock/magicsock.go index 788e7e7b9..8a42638ad 100644 --- a/wgengine/magicsock/magicsock.go +++ b/wgengine/magicsock/magicsock.go @@ -1629,13 +1629,14 @@ func (a *AddrSet) String() string { buf := new(strings.Builder) buf.WriteByte('[') if a.roamAddr != nil { - fmt.Fprintf(buf, "roam:%s:%d", a.roamAddr.IP, a.roamAddr.Port) + buf.WriteString("roam:") + sbPrintAddr(buf, *a.roamAddr) } for i, addr := range a.addrs { if i > 0 || a.roamAddr != nil { buf.WriteString(", ") } - fmt.Fprintf(buf, "%s:%d", addr.IP, addr.Port) + sbPrintAddr(buf, addr) if a.curAddr == i { buf.WriteByte('*') } @@ -1845,3 +1846,15 @@ func ip4or6(ip net.IP) net.IP { } return ip } + +func sbPrintAddr(sb *strings.Builder, a net.UDPAddr) { + is6 := a.IP.To4() == nil + if is6 { + sb.WriteByte('[') + } + fmt.Fprintf(sb, "%s", a.IP) + if is6 { + sb.WriteByte(']') + } + fmt.Fprintf(sb, ":%d", a.Port) +}