diff --git a/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java b/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
index 358bb0782eb5e1773d98fbe6a1c8e4a2c02b4d5c..47bf16d7ec2fa1d888ee4944d9b430bfcca3d15e 100644
--- a/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
+++ b/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
@@ -146,6 +146,7 @@ class LanTcpPlugin extends TcpPlugin {
 						try {
 							// Connect back on the advertised TCP port
 							Socket s = new Socket(packet.getAddress(), port);
+							s.setSoTimeout(0);
 							return new TcpTransportConnection(s);
 						} catch(IOException e) {
 							if(LOG.isLoggable(WARNING))
@@ -286,7 +287,9 @@ class LanTcpPlugin extends TcpPlugin {
 				try {
 					int wait = (int) (Math.min(end, nextPacket) - now);
 					ss.setSoTimeout(wait < 1 ? 1 : wait);
-					return new TcpTransportConnection(ss.accept());
+					Socket s = ss.accept();
+					s.setSoTimeout(0);
+					return new TcpTransportConnection(s);
 				} catch(SocketTimeoutException e) {
 					now = System.currentTimeMillis();
 					if(now < end) {
@@ -310,12 +313,4 @@ class LanTcpPlugin extends TcpPlugin {
 		}
 		return null;
 	}
-
-	private void tryToClose(ServerSocket ss) {
-		try {
-			ss.close();
-		} catch(IOException e) {
-			if(LOG.isLoggable(WARNING)) LOG.warning(e.toString());
-		}
-	}
 }
diff --git a/src/net/sf/briar/plugins/tcp/TcpPlugin.java b/src/net/sf/briar/plugins/tcp/TcpPlugin.java
index 10c704e9be69661475417a7f9a61be07e3cc0422..0ca380a0109128216fc1910a7adeb130a5e88581 100644
--- a/src/net/sf/briar/plugins/tcp/TcpPlugin.java
+++ b/src/net/sf/briar/plugins/tcp/TcpPlugin.java
@@ -99,7 +99,7 @@ abstract class TcpPlugin implements DuplexPlugin {
 		acceptContactConnections(ss);
 	}
 
-	private void tryToClose(ServerSocket ss) {
+	protected void tryToClose(ServerSocket ss) {
 		try {
 			ss.close();
 		} catch(IOException e) {
@@ -120,6 +120,7 @@ abstract class TcpPlugin implements DuplexPlugin {
 			Socket s;
 			try {
 				s = ss.accept();
+				s.setSoTimeout(0);
 			} catch(IOException e) {
 				// This is expected when the socket is closed
 				if(LOG.isLoggable(INFO)) LOG.info(e.toString());
@@ -179,6 +180,7 @@ abstract class TcpPlugin implements DuplexPlugin {
 		Socket s = new Socket();
 		if(addr == null || s == null) return null;
 		try {
+			s.setSoTimeout(0);
 			s.connect(addr);
 			return new TcpTransportConnection(s);
 		} catch(IOException e) {