diff --git a/connections/implementation/mediums/ble/ble_socket.cc b/connections/implementation/mediums/ble/ble_socket.cc index 77af0129..5b5072b9 100644 --- a/connections/implementation/mediums/ble/ble_socket.cc +++ b/connections/implementation/mediums/ble/ble_socket.cc @@ -91,11 +91,16 @@ Exception BleSocket::Close() { } Exception BleSocket::CloseLocked() { + if (!ble_input_stream_ && !ble_output_stream_) { + return {Exception::kSuccess}; + } if (ble_input_stream_) { ble_input_stream_->Close(); + ble_input_stream_.reset(); } if (ble_output_stream_) { ble_output_stream_->Close(); + ble_output_stream_.reset(); } Medium medium = GetMediumLocked(); switch (medium) { diff --git a/connections/implementation/mediums/ble/ble_socket_test.cc b/connections/implementation/mediums/ble/ble_socket_test.cc index bd824473..78f7c1a0 100644 --- a/connections/implementation/mediums/ble/ble_socket_test.cc +++ b/connections/implementation/mediums/ble/ble_socket_test.cc @@ -118,10 +118,10 @@ class BleSocketBleMediumTest : public ::testing::Test { ASSERT_NE(socket_, nullptr); } - FakeBleSocketImpl* fake_socket_impl_; - std::unique_ptr socket_; FakeInputStream fake_input_stream_; FakeOutputStream fake_output_stream_; + FakeBleSocketImpl* fake_socket_impl_; + std::unique_ptr socket_; }; TEST_F(BleSocketBleMediumTest, CloseSucceeds) { @@ -176,10 +176,10 @@ class BleL2capSocketBleMediumTest : public ::testing::Test { ASSERT_NE(socket_, nullptr); } - FakeBleL2capSocketImpl* fake_l2cap_socket_impl_; - std::unique_ptr socket_; FakeInputStream fake_input_stream_; FakeOutputStream fake_output_stream_; + FakeBleL2capSocketImpl* fake_l2cap_socket_impl_; + std::unique_ptr socket_; }; TEST_F(BleL2capSocketBleMediumTest, CloseSucceeds) {