Skip to content

Commit b0f1516

Browse files
author
Federico Fissore
committed
Zeroconf services may have multiple IP addresses: let's consider them all
1 parent e6b11c4 commit b0f1516

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

app/src/cc/arduino/packages/discoverers/NetworkDiscovery.java

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -93,34 +93,36 @@ public void serviceRemoved(ServiceEvent serviceEvent) {
9393
@Override
9494
public void serviceResolved(ServiceEvent serviceEvent) {
9595
ServiceInfo info = serviceEvent.getInfo();
96-
String address = info.getInet4Addresses()[0].getHostAddress();
97-
String name = serviceEvent.getName();
98-
99-
PreferencesMap prefs = null;
100-
String board = null;
101-
if (info.hasData()) {
102-
prefs = new PreferencesMap();
103-
board = info.getPropertyString("board");
104-
prefs.put("board", board);
105-
prefs.put("distro_version", info.getPropertyString("distro_version"));
106-
}
96+
for (InetAddress inetAddress : info.getInet4Addresses()) {
97+
String address = inetAddress.getHostAddress();
98+
String name = serviceEvent.getName();
99+
100+
PreferencesMap prefs = null;
101+
String board = null;
102+
if (info.hasData()) {
103+
prefs = new PreferencesMap();
104+
board = info.getPropertyString("board");
105+
prefs.put("board", board);
106+
prefs.put("distro_version", info.getPropertyString("distro_version"));
107+
}
107108

108-
String label = name + " at " + address;
109-
if (board != null) {
110-
String boardName = Base.getPlatform().resolveDeviceByBoardID(Base.packages, board);
111-
label += " (" + boardName + ")";
112-
}
109+
String label = name + " at " + address;
110+
if (board != null) {
111+
String boardName = Base.getPlatform().resolveDeviceByBoardID(Base.packages, board);
112+
label += " (" + boardName + ")";
113+
}
113114

114-
BoardPort port = new BoardPort();
115-
port.setAddress(address);
116-
port.setBoardName(name);
117-
port.setProtocol("network");
118-
port.setPrefs(prefs);
119-
port.setLabel(label);
115+
BoardPort port = new BoardPort();
116+
port.setAddress(address);
117+
port.setBoardName(name);
118+
port.setProtocol("network");
119+
port.setPrefs(prefs);
120+
port.setLabel(label);
120121

121-
synchronized (this) {
122-
removeDuplicateBoards(port);
123-
ports.add(port);
122+
synchronized (this) {
123+
removeDuplicateBoards(port);
124+
ports.add(port);
125+
}
124126
}
125127
}
126128

0 commit comments

Comments
 (0)