summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2018-03-12 13:35:42 -0400
committerGitHub <noreply@github.com>2018-03-12 13:35:42 -0400
commit1d5aac573895ae6a9eee0f298fb521391e5d596d (patch)
treee74aefe24052ad2ec257469f9c44288daab2775a
parent54a98542e25a8e186bff4b64da093c350f14f7ae (diff)
parenteaf7d56606340599f80d8cc3753df215593a7ad8 (diff)
downloadsdl_android-1d5aac573895ae6a9eee0f298fb521391e5d596d.tar.gz
Merge pull request #702 from thomasheike/bugfix/issue_480
#480 fixed deadlock when exception is thrown in BTTransport.disconnect
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java18
1 files changed, 11 insertions, 7 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java b/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java
index 526d2226d..ffa9317a1 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/transport/BTTransport.java
@@ -46,6 +46,8 @@ public class BTTransport extends SdlTransport {
// Boolean to monitor if the transport is in a disconnecting state
private boolean _disconnecting = false;
+
+ private final Object DISCONNECT_LOCK = new Object();
public BTTransport(ITransportListener transportListener) {
super(transportListener);
@@ -229,13 +231,15 @@ public class BTTransport extends SdlTransport {
* @param msg
* @param ex
*/
- private synchronized void disconnect(String msg, Exception ex) {
- // If already disconnecting, return
- if (_disconnecting) {
- // No need to recursively call
- return;
- }
- _disconnecting = true;
+ private void disconnect(String msg, Exception ex) {
+ synchronized(DISCONNECT_LOCK) {
+ // If already disconnecting, return
+ if (_disconnecting) {
+ // No need to recursively call
+ return;
+ }
+ _disconnecting = true;
+ }
String disconnectMsg = (msg == null ? "" : msg);
if (ex != null) {