From 1b0bd6961a0a68e4f21dc6cd4fd8c8d5023bb3f6 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Sun, 30 Oct 2011 22:35:46 +0000
Subject: [PATCH] You can't step in the same Enumeration twice.

---
 .../briar/plugins/socket/LanSocketPlugin.java | 13 ++++++------
 .../plugins/socket/SimpleSocketPlugin.java    | 20 +++++++++----------
 2 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/components/net/sf/briar/plugins/socket/LanSocketPlugin.java b/components/net/sf/briar/plugins/socket/LanSocketPlugin.java
index 3e01734138..15c5cdd623 100644
--- a/components/net/sf/briar/plugins/socket/LanSocketPlugin.java
+++ b/components/net/sf/briar/plugins/socket/LanSocketPlugin.java
@@ -12,6 +12,7 @@ import java.net.SocketTimeoutException;
 import java.net.UnknownHostException;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.List;
 import java.util.Random;
 import java.util.concurrent.Executor;
 import java.util.logging.Level;
@@ -136,28 +137,28 @@ public class LanSocketPlugin extends SimpleSocketPlugin {
 
 	private InetAddress chooseMulticastInterface() throws IOException {
 		// Try to find a LAN interface that supports multicast
-		Enumeration<NetworkInterface> ifaces =
-			NetworkInterface.getNetworkInterfaces();
-		for(NetworkInterface iface : Collections.list(ifaces)) {
+		List<NetworkInterface> ifaces =
+			Collections.list(NetworkInterface.getNetworkInterfaces());
+		for(NetworkInterface iface : ifaces) {
 			if(iface.supportsMulticast()) {
 				Enumeration<InetAddress> addrs = iface.getInetAddresses();
 				for(InetAddress addr : Collections.list(addrs)) {
 					if(addr.isLinkLocalAddress() || addr.isSiteLocalAddress()) {
 						if(LOG.isLoggable(Level.INFO))
-							LOG.info("Binding to " + addr.getHostAddress());
+							LOG.info("Preferring " + addr.getHostAddress());
 						return addr;
 					}
 				}
 			}
 		}
 		// Settle for a WAN interface that supports multicast
-		for(NetworkInterface iface : Collections.list(ifaces)) {
+		for(NetworkInterface iface : ifaces) {
 			if(iface.supportsMulticast()) {
 				Enumeration<InetAddress> addrs = iface.getInetAddresses();
 				for(InetAddress addr : Collections.list(addrs)) {
 					if(!addr.isLoopbackAddress()) {
 						if(LOG.isLoggable(Level.INFO))
-							LOG.info("Binding to " + addr.getHostAddress());
+							LOG.info("Accepting " + addr.getHostAddress());
 						return addr;
 					}
 				}
diff --git a/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java b/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java
index ac97cbcfff..1c0c2d55ef 100644
--- a/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java
+++ b/components/net/sf/briar/plugins/socket/SimpleSocketPlugin.java
@@ -8,7 +8,7 @@ import java.net.ServerSocket;
 import java.net.Socket;
 import java.net.SocketAddress;
 import java.util.Collections;
-import java.util.Enumeration;
+import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -74,30 +74,28 @@ class SimpleSocketPlugin extends SocketPlugin {
 	}
 
 	protected InetAddress chooseTcpInterface(boolean lan) throws IOException {
-		Enumeration<NetworkInterface> ifaces =
-			NetworkInterface.getNetworkInterfaces();
+		List<NetworkInterface> ifaces =
+			Collections.list(NetworkInterface.getNetworkInterfaces());
 		// Try to find an interface of the preferred type (LAN or WAN)
-		for(NetworkInterface iface : Collections.list(ifaces)) {
-			Enumeration<InetAddress> addrs = iface.getInetAddresses();
-			for(InetAddress addr : Collections.list(addrs)) {
+		for(NetworkInterface iface : ifaces) {
+			for(InetAddress addr : Collections.list(iface.getInetAddresses())) {
 				if(!addr.isLoopbackAddress()) {
 					boolean link = addr.isLinkLocalAddress();
 					boolean site = addr.isSiteLocalAddress();
 					if(lan == (link || site)) {
 						if(LOG.isLoggable(Level.INFO))
-							LOG.info("Binding to " + addr.getHostAddress());
+							LOG.info("Preferring " + addr.getHostAddress());
 						return addr;
 					}
 				}
 			}
 		}
 		// Settle for an interface that's not of the preferred type
-		for(NetworkInterface iface : Collections.list(ifaces)) {
-			Enumeration<InetAddress> addrs = iface.getInetAddresses();
-			for(InetAddress addr : Collections.list(addrs)) {
+		for(NetworkInterface iface : ifaces) {
+			for(InetAddress addr : Collections.list(iface.getInetAddresses())) {
 				if(!addr.isLoopbackAddress()) {
 					if(LOG.isLoggable(Level.INFO))
-						LOG.info("Binding to " + addr.getHostAddress());
+						LOG.info("Accepting " + addr.getHostAddress());
 					return addr;
 				}
 			}
-- 
GitLab