Skip to content

Commit 3625509

Browse files
committed
Handle empty adb mdns service lists
1 parent 8f810af commit 3625509

3 files changed

Lines changed: 42 additions & 2 deletions

File tree

internal/adb/adb.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
// ADB Wi-Fi mDNS/reconnect improvements described as ADB Wi-Fi 2.
1919
const Wifi2PlatformToolsMajor = 37
2020

21+
const mdnsServicesHeader = "List of discovered mdns services"
22+
2123
var platformToolsVersionRE = regexp.MustCompile(`(?m)^Version\s+([0-9]+)(?:\.[0-9]+)*`)
2224

2325
type VersionInfo struct {
@@ -128,6 +130,18 @@ func MDNSServices(ctx context.Context, adbPath string) (string, error) {
128130
return combined, nil
129131
}
130132

133+
func ParseMDNSServices(raw string) []string {
134+
var services []string
135+
for _, line := range strings.Split(raw, "\n") {
136+
line = strings.TrimSpace(line)
137+
if line == "" || line == mdnsServicesHeader {
138+
continue
139+
}
140+
services = append(services, line)
141+
}
142+
return services
143+
}
144+
131145
// StartServer ensures the adb daemon is running. Without this the first
132146
// `adb pair` call sometimes hangs on daemon startup before the mDNS
133147
// announce window closes.

internal/adb/adb_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,28 @@ func TestParseVersionWithoutPlatformToolsVersion(t *testing.T) {
8181
t.Fatalf("SupportsWifi2Improvements = true, want false")
8282
}
8383
}
84+
85+
func TestParseMDNSServicesHeaderOnly(t *testing.T) {
86+
got := ParseMDNSServices("List of discovered mdns services\n")
87+
if len(got) != 0 {
88+
t.Fatalf("ParseMDNSServices returned %v, want empty", got)
89+
}
90+
}
91+
92+
func TestParseMDNSServices(t *testing.T) {
93+
raw := "List of discovered mdns services\nadb-123._adb-tls-connect._tcp.\t192.168.1.10:37123\n\nstudio-abc._adb-tls-pairing._tcp.\t192.168.1.10:45555"
94+
95+
got := ParseMDNSServices(raw)
96+
want := []string{
97+
"adb-123._adb-tls-connect._tcp.\t192.168.1.10:37123",
98+
"studio-abc._adb-tls-pairing._tcp.\t192.168.1.10:45555",
99+
}
100+
if len(got) != len(want) {
101+
t.Fatalf("len(ParseMDNSServices) = %d, want %d: %v", len(got), len(want), got)
102+
}
103+
for i := range want {
104+
if got[i] != want[i] {
105+
t.Fatalf("ParseMDNSServices[%d] = %q, want %q", i, got[i], want[i])
106+
}
107+
}
108+
}

main.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,14 @@ func doctor(verbose bool) error {
110110
fmt.Println("hint: if pairing hangs, check same Wi-Fi, AP isolation, firewall rules, and UDP 5353.")
111111
return nil
112112
}
113-
if services == "" {
113+
serviceLines := adb.ParseMDNSServices(services)
114+
if len(serviceLines) == 0 {
114115
fmt.Println("mDNS services: none reported by adb")
115116
fmt.Println("hint: this is normal when no Android device is advertising Wireless debugging right now.")
116117
return nil
117118
}
118119
fmt.Println("mDNS services:")
119-
fmt.Println(services)
120+
fmt.Println(strings.Join(serviceLines, "\n"))
120121
return nil
121122
}
122123

0 commit comments

Comments
 (0)