From a4adba2bcf7454b354b2e5f2555c5482b954224e Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Sat, 11 Apr 2020 02:26:00 -0700 Subject: [PATCH] Add better exception handling for the ipv6 ssdp multicast --- .../jf/fusionIdea/run/FusionScriptState.java | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/jf/fusionIdea/run/FusionScriptState.java b/src/main/java/org/jf/fusionIdea/run/FusionScriptState.java index ac4d92b..fb6d58e 100644 --- a/src/main/java/org/jf/fusionIdea/run/FusionScriptState.java +++ b/src/main/java/org/jf/fusionIdea/run/FusionScriptState.java @@ -248,25 +248,36 @@ private MulticastSocket sendIpv6SSDPRequest() { MulticastSocket socket = new MulticastSocket(0); socket.setLoopbackMode(/* disabled= */ false); + boolean success = false; for (NetworkInterface netint : Collections.list(nets)) { - if (netint.supportsMulticast()) { - boolean hasIpV6 = false; - for (InetAddress address : Collections.list(netint.getInetAddresses())) { - if (address instanceof Inet6Address) { - hasIpV6 = true; - break; + try { + if (netint.supportsMulticast()) { + boolean hasIpV6 = false; + for (InetAddress address : Collections.list(netint.getInetAddresses())) { + if (address instanceof Inet6Address) { + hasIpV6 = true; + break; + } + } + if (hasIpV6) { + socket.setNetworkInterface(netint); + socket.send(new DatagramPacket(SEARCH_MESSAGE, SEARCH_MESSAGE.length, multicastAddress)); + success = true; } } - if (hasIpV6) { - socket.setNetworkInterface(netint); - socket.send(new DatagramPacket(SEARCH_MESSAGE, SEARCH_MESSAGE.length, multicastAddress)); - } + } catch (IOException ex) { + FusionIdeaPlugin.log.debug("ipv6 multicast failed on " + netint.getName(), ex); } } + if (!success) { + FusionIdeaPlugin.log.error("Couldn't send ipv6 ssdp packet on any interface"); + return null; + } + return socket; } catch (IOException ex) { - FusionIdeaPlugin.log.debug("ipv6 ssdp failed"); + FusionIdeaPlugin.log.debug("ipv6 ssdp failed", ex); return null; } }