From b275a0ffff3dd9a6d0c598ce78dec268c169731b Mon Sep 17 00:00:00 2001 From: akwizgran Date: Sat, 16 Apr 2022 13:32:56 +0100 Subject: [PATCH] Increase Tor connection timeout to 2 minutes. --- .../briarproject/bramble/api/plugin/TorConstants.java | 7 +++++-- .../java/org/briarproject/bramble/socks/SocksModule.java | 3 ++- .../java/org/briarproject/bramble/socks/SocksSocket.java | 9 ++++++--- .../briarproject/bramble/socks/SocksSocketFactory.java | 9 ++++++--- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java index c94fc6755..10e9c557d 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java @@ -1,5 +1,7 @@ package org.briarproject.bramble.api.plugin; +import static java.util.concurrent.TimeUnit.SECONDS; + public interface TorConstants { TransportId ID = new TransportId("org.briarproject.bramble.tor"); @@ -10,8 +12,9 @@ public interface TorConstants { int DEFAULT_SOCKS_PORT = 59050; int DEFAULT_CONTROL_PORT = 59051; - int CONNECT_TO_PROXY_TIMEOUT = 5000; // Milliseconds - int EXTRA_SOCKET_TIMEOUT = 30000; // Milliseconds + int CONNECT_TO_PROXY_TIMEOUT = (int) SECONDS.toMillis(5); + int EXTRA_CONNECT_TIMEOUT = (int) SECONDS.toMillis(120); + int EXTRA_SOCKET_TIMEOUT = (int) SECONDS.toMillis(30); // Local settings (not shared with contacts) String PREF_TOR_NETWORK = "network2"; diff --git a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java index c74666884..5d4d7939c 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java @@ -10,6 +10,7 @@ import dagger.Module; import dagger.Provides; import static org.briarproject.bramble.api.plugin.TorConstants.CONNECT_TO_PROXY_TIMEOUT; +import static org.briarproject.bramble.api.plugin.TorConstants.EXTRA_CONNECT_TIMEOUT; import static org.briarproject.bramble.api.plugin.TorConstants.EXTRA_SOCKET_TIMEOUT; @Module @@ -20,6 +21,6 @@ public class SocksModule { InetSocketAddress proxy = new InetSocketAddress("127.0.0.1", torSocksPort); return new SocksSocketFactory(proxy, CONNECT_TO_PROXY_TIMEOUT, - EXTRA_SOCKET_TIMEOUT); + EXTRA_CONNECT_TIMEOUT, EXTRA_SOCKET_TIMEOUT); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocket.java b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocket.java index a254026ef..e7b15786e 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocket.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocket.java @@ -26,15 +26,18 @@ class SocksSocket extends Socket { "Address type not supported" }; + @SuppressWarnings("MismatchedReadAndWriteOfArray") private static final byte[] UNSPECIFIED_ADDRESS = new byte[4]; private final SocketAddress proxy; - private final int connectToProxyTimeout, extraSocketTimeout; + private final int connectToProxyTimeout; + private final int extraConnectTimeout, extraSocketTimeout; SocksSocket(SocketAddress proxy, int connectToProxyTimeout, - int extraSocketTimeout) { + int extraConnectTimeout, int extraSocketTimeout) { this.proxy = proxy; this.connectToProxyTimeout = connectToProxyTimeout; + this.extraConnectTimeout = extraConnectTimeout; this.extraSocketTimeout = extraSocketTimeout; } @@ -66,7 +69,7 @@ class SocksSocket extends Socket { // Use the supplied timeout temporarily, plus any configured extra int oldTimeout = getSoTimeout(); - setSoTimeout(timeout + extraSocketTimeout); + setSoTimeout(timeout + extraConnectTimeout); // Connect to the endpoint via the proxy sendConnectRequest(out, host, port); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocketFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocketFactory.java index fb0b1cd91..6f1edc8a0 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocketFactory.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksSocketFactory.java @@ -11,18 +11,21 @@ import javax.net.SocketFactory; class SocksSocketFactory extends SocketFactory { private final SocketAddress proxy; - private final int connectToProxyTimeout, extraSocketTimeout; + private final int connectToProxyTimeout; + private final int extraConnectTimeout, extraSocketTimeout; SocksSocketFactory(SocketAddress proxy, int connectToProxyTimeout, - int extraSocketTimeout) { + int extraConnectTimeout, int extraSocketTimeout) { this.proxy = proxy; this.connectToProxyTimeout = connectToProxyTimeout; + this.extraConnectTimeout = extraConnectTimeout; this.extraSocketTimeout = extraSocketTimeout; } @Override public Socket createSocket() { - return new SocksSocket(proxy, connectToProxyTimeout, extraSocketTimeout); + return new SocksSocket(proxy, connectToProxyTimeout, + extraConnectTimeout, extraSocketTimeout); } @Override