From a83770cfc309f5ce75d25f520f994ece87fcc855 Mon Sep 17 00:00:00 2001 From: roadfun Date: Sun, 15 Feb 2015 20:20:33 -0600 Subject: [PATCH] Fix for #2576 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I’ve had a couple issues with unreliable Yun discovery. This change has fixed those issue for me and would appear to address concerns raised in #2576. --- .../packages/discoverers/NetworkDiscovery.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java b/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java index 85cd05c6681..5d8a43a56fd 100644 --- a/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java @@ -62,12 +62,19 @@ public List discovery() { Iterator iterator = ports.iterator(); while (iterator.hasNext()) { try { - BoardPort board = iterator.next(); - if (!NetUtils.isReachable(InetAddress.getByName(board.getAddress()), Integer.parseInt(board.getPrefs().get("port")))) { - iterator.remove(); - } + BoardPort board = iterator.next(); + InetAddress address= InetAddress.getByName(board.getAddress()); + boolean reachable = false; + try { + reachable = address.isReachable(100); + } catch (IOException e) { + // ignore (reachable is false by default) + } + if (!reachable) { + iterator.remove(); + } } catch (UnknownHostException e) { - iterator.remove(); + iterator.remove(); } } return ports;