diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java index f43812ad5..19fd8cb8c 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java @@ -78,9 +78,10 @@ class AndroidBluetoothPlugin extends BluetoothPlugin { AndroidBluetoothPlugin(BluetoothConnectionLimiter connectionLimiter, Executor ioExecutor, AndroidExecutor androidExecutor, Context appContext, SecureRandom secureRandom, Clock clock, - Backoff backoff, PluginCallback callback, int maxLatency) { + Backoff backoff, PluginCallback callback, int maxLatency, + int maxIdleTime) { super(connectionLimiter, ioExecutor, secureRandom, backoff, callback, - maxLatency); + maxLatency, maxIdleTime); this.androidExecutor = androidExecutor; this.appContext = appContext; this.clock = clock; diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java index 6dd5c094f..f74967577 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPluginFactory.java @@ -25,6 +25,7 @@ import static org.briarproject.bramble.api.plugin.BluetoothConstants.ID; public class AndroidBluetoothPluginFactory implements DuplexPluginFactory { private static final int MAX_LATENCY = 30 * 1000; // 30 seconds + private static final int MAX_IDLE_TIME = 30 * 1000; // 30 seconds private static final int MIN_POLLING_INTERVAL = 60 * 1000; // 1 minute private static final int MAX_POLLING_INTERVAL = 10 * 60 * 1000; // 10 mins private static final double BACKOFF_BASE = 1.2; @@ -68,7 +69,8 @@ public class AndroidBluetoothPluginFactory implements DuplexPluginFactory { MAX_POLLING_INTERVAL, BACKOFF_BASE); AndroidBluetoothPlugin plugin = new AndroidBluetoothPlugin( connectionLimiter, ioExecutor, androidExecutor, appContext, - secureRandom, clock, backoff, callback, MAX_LATENCY); + secureRandom, clock, backoff, callback, MAX_LATENCY, + MAX_IDLE_TIME); eventBus.addListener(plugin); return plugin; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java index 0dec35bc5..1c574dd6b 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/bluetooth/BluetoothPlugin.java @@ -65,7 +65,7 @@ abstract class BluetoothPlugin implements DuplexPlugin, EventListener { private final SecureRandom secureRandom; private final Backoff backoff; private final PluginCallback callback; - private final int maxLatency; + private final int maxLatency, maxIdleTime; private final AtomicBoolean used = new AtomicBoolean(false); private volatile boolean running = false, contactConnections = false; @@ -106,13 +106,15 @@ abstract class BluetoothPlugin implements DuplexPlugin, EventListener { BluetoothPlugin(BluetoothConnectionLimiter connectionLimiter, Executor ioExecutor, SecureRandom secureRandom, - Backoff backoff, PluginCallback callback, int maxLatency) { + Backoff backoff, PluginCallback callback, int maxLatency, + int maxIdleTime) { this.connectionLimiter = connectionLimiter; this.ioExecutor = ioExecutor; this.secureRandom = secureRandom; this.backoff = backoff; this.callback = callback; this.maxLatency = maxLatency; + this.maxIdleTime = maxIdleTime; } void onAdapterEnabled() { @@ -141,8 +143,7 @@ abstract class BluetoothPlugin implements DuplexPlugin, EventListener { @Override public int getMaxIdleTime() { - // Bluetooth detects dead connections so we don't need keepalives - return Integer.MAX_VALUE; + return maxIdleTime; } @Override diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java index 59a105f20..62fad72a8 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPlugin.java @@ -35,9 +35,10 @@ class JavaBluetoothPlugin extends BluetoothPlugin { JavaBluetoothPlugin(BluetoothConnectionLimiter connectionManager, Executor ioExecutor, SecureRandom secureRandom, - Backoff backoff, PluginCallback callback, int maxLatency) { + Backoff backoff, PluginCallback callback, int maxLatency, + int maxIdleTime) { super(connectionManager, ioExecutor, secureRandom, backoff, callback, - maxLatency); + maxLatency, maxIdleTime); } @Override diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java index a2ada859d..62e51c6c8 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothPluginFactory.java @@ -21,6 +21,7 @@ import static org.briarproject.bramble.api.plugin.BluetoothConstants.ID; public class JavaBluetoothPluginFactory implements DuplexPluginFactory { private static final int MAX_LATENCY = 30 * 1000; // 30 seconds + private static final int MAX_IDLE_TIME = 30 * 1000; // 30 seconds private static final int MIN_POLLING_INTERVAL = 60 * 1000; // 1 minute private static final int MAX_POLLING_INTERVAL = 10 * 60 * 1000; // 10 mins private static final double BACKOFF_BASE = 1.2; @@ -56,7 +57,8 @@ public class JavaBluetoothPluginFactory implements DuplexPluginFactory { Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL, MAX_POLLING_INTERVAL, BACKOFF_BASE); JavaBluetoothPlugin plugin = new JavaBluetoothPlugin(connectionLimiter, - ioExecutor, secureRandom, backoff, callback, MAX_LATENCY); + ioExecutor, secureRandom, backoff, callback, MAX_LATENCY, + MAX_IDLE_TIME); eventBus.addListener(plugin); return plugin; }