From 79ad5ca07ee41edd77e456420a69edf680def94b Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 13 Aug 2020 16:21:46 +0100 Subject: [PATCH] Ensure TimeoutInputStreams are closed. --- .../plugin/bluetooth/AndroidBluetoothTransportConnection.java | 1 + .../java/org/briarproject/bramble/api/io/TimeoutMonitor.java | 4 ++++ .../plugin/bluetooth/JavaBluetoothTransportConnection.java | 1 + 3 files changed, 6 insertions(+) diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java index b6a695116..b36652cd9 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothTransportConnection.java @@ -55,6 +55,7 @@ class AndroidBluetoothTransportConnection protected void closeConnection(boolean exception) throws IOException { try { socket.close(); + in.close(); } finally { wakeLock.release(); connectionLimiter.connectionClosed(this); diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/io/TimeoutMonitor.java b/bramble-api/src/main/java/org/briarproject/bramble/api/io/TimeoutMonitor.java index 92d440946..a356fee98 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/io/TimeoutMonitor.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/io/TimeoutMonitor.java @@ -7,6 +7,10 @@ public interface TimeoutMonitor { /** * Returns an {@link InputStream} that wraps the given stream and allows * read timeouts to be detected. + *

+ * The returned stream must be {@link InputStream#close() closed} when it's + * no longer needed to ensure that resources held by the timeout monitor + * are released. * * @param timeoutMs The read timeout in milliseconds. Timeouts will be * detected eventually but are not guaranteed to be detected immediately. diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java index 2ac917c7b..4e2d20562 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/bluetooth/JavaBluetoothTransportConnection.java @@ -46,6 +46,7 @@ class JavaBluetoothTransportConnection protected void closeConnection(boolean exception) throws IOException { try { socket.close(); + in.close(); } finally { connectionLimiter.connectionClosed(this); }