Merge pull request #569 from garydgregory/NPE_NetworkInterface_getNetworkInterfaces

Guard against null NetworkInterface.getNetworkInterfaces()
This commit is contained in:
Jean-Baptiste Onofré 2020-11-20 18:13:19 +01:00 committed by GitHub
commit 5bc7532d42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 14 additions and 12 deletions

View File

@ -345,20 +345,22 @@ public class MulticastDiscoveryAgent implements DiscoveryAgent, Runnable {
private NetworkInterface findNetworkInterface() throws SocketException {
Enumeration<NetworkInterface> ifcs = NetworkInterface.getNetworkInterfaces();
List<NetworkInterface> possibles = new ArrayList<NetworkInterface>();
while (ifcs.hasMoreElements()) {
NetworkInterface ni = ifcs.nextElement();
try {
if (ni.supportsMulticast()
&& ni.isUp()) {
for (InterfaceAddress ia : ni.getInterfaceAddresses()) {
if (ia != null && ia.getAddress() instanceof java.net.Inet4Address
&& !ia.getAddress().isLoopbackAddress()
&& (ni.getDisplayName()==null || !ni.getDisplayName().startsWith("vnic"))) {
possibles.add(ni);
if (ifcs != null) {
while (ifcs.hasMoreElements()) {
NetworkInterface ni = ifcs.nextElement();
try {
if (ni.supportsMulticast()
&& ni.isUp()) {
for (InterfaceAddress ia : ni.getInterfaceAddresses()) {
if (ia != null && ia.getAddress() instanceof java.net.Inet4Address
&& !ia.getAddress().isLoopbackAddress()
&& (ni.getDisplayName()==null || !ni.getDisplayName().startsWith("vnic"))) {
possibles.add(ni);
}
}
}
}
} catch (SocketException ignored) {}
} catch (SocketException ignored) {}
}
}
return possibles.isEmpty() ? null : possibles.get(possibles.size() - 1);
}