diff --git a/adb_test.go b/adb_test.go index ea645d1..b970d2f 100644 --- a/adb_test.go +++ b/adb_test.go @@ -60,11 +60,13 @@ func TestNormalizeAddr(t *testing.T) { {in: "192.168.1.5", want: "192.168.1.5:5555"}, {in: "192.168.1.5:5556", want: "192.168.1.5:5556"}, {in: "2001:db8::1", want: "[2001:db8::1]:5555"}, + {in: "[2001:db8::1]", want: "[2001:db8::1]:5555"}, {in: "[2001:db8::1]:5556", want: "[2001:db8::1]:5556"}, {in: "mydevice.local", want: "mydevice.local:5555"}, {in: "phone:5555", want: "phone:5555"}, {in: "", wantErr: true}, {in: "phone:", wantErr: true}, + {in: "[2001:db8::1]:", wantErr: true}, {in: "phone:not-a-port", wantErr: true}, {in: "phone:70000", wantErr: true}, {in: "phone:0", wantErr: true}, diff --git a/device.go b/device.go index e951d9c..938883a 100644 --- a/device.go +++ b/device.go @@ -220,6 +220,12 @@ func normalizeAddr(addr string) (string, error) { if ip, err := netip.ParseAddr(addr); err == nil { return netip.AddrPortFrom(ip, 5555).String(), nil } + if strings.HasPrefix(addr, "[") && strings.HasSuffix(addr, "]") { + unbracketed := strings.TrimSuffix(strings.TrimPrefix(addr, "["), "]") + if ip, err := netip.ParseAddr(unbracketed); err == nil { + return netip.AddrPortFrom(ip, 5555).String(), nil + } + } // Hostname, optionally with a port. if host, port, err := net.SplitHostPort(addr); err == nil { if host == "" || port == "" {