From b0f151672915eab45c2c1c28e2cd6bfab0c382ad Mon Sep 17 00:00:00 2001 From: Federico Fissore Date: Mon, 22 Jul 2013 10:06:21 +0200 Subject: [PATCH] Zeroconf services may have multiple IP addresses: let's consider them all --- .../discoverers/NetworkDiscovery.java | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/app/src/cc/arduino/packages/discoverers/NetworkDiscovery.java b/app/src/cc/arduino/packages/discoverers/NetworkDiscovery.java index 9fa41b30f..1e4186a77 100644 --- a/app/src/cc/arduino/packages/discoverers/NetworkDiscovery.java +++ b/app/src/cc/arduino/packages/discoverers/NetworkDiscovery.java @@ -93,34 +93,36 @@ public class NetworkDiscovery implements Discovery, ServiceListener, cc.arduino. @Override public void serviceResolved(ServiceEvent serviceEvent) { ServiceInfo info = serviceEvent.getInfo(); - String address = info.getInet4Addresses()[0].getHostAddress(); - String name = serviceEvent.getName(); + for (InetAddress inetAddress : info.getInet4Addresses()) { + String address = inetAddress.getHostAddress(); + String name = serviceEvent.getName(); - PreferencesMap prefs = null; - String board = null; - if (info.hasData()) { - prefs = new PreferencesMap(); - board = info.getPropertyString("board"); - prefs.put("board", board); - prefs.put("distro_version", info.getPropertyString("distro_version")); - } + PreferencesMap prefs = null; + String board = null; + if (info.hasData()) { + prefs = new PreferencesMap(); + board = info.getPropertyString("board"); + prefs.put("board", board); + prefs.put("distro_version", info.getPropertyString("distro_version")); + } - String label = name + " at " + address; - if (board != null) { - String boardName = Base.getPlatform().resolveDeviceByBoardID(Base.packages, board); - label += " (" + boardName + ")"; - } + String label = name + " at " + address; + if (board != null) { + String boardName = Base.getPlatform().resolveDeviceByBoardID(Base.packages, board); + label += " (" + boardName + ")"; + } - BoardPort port = new BoardPort(); - port.setAddress(address); - port.setBoardName(name); - port.setProtocol("network"); - port.setPrefs(prefs); - port.setLabel(label); + BoardPort port = new BoardPort(); + port.setAddress(address); + port.setBoardName(name); + port.setProtocol("network"); + port.setPrefs(prefs); + port.setLabel(label); - synchronized (this) { - removeDuplicateBoards(port); - ports.add(port); + synchronized (this) { + removeDuplicateBoards(port); + ports.add(port); + } } }