diff options
author | Joey Grover <joeygrover@gmail.com> | 2018-03-12 13:35:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-12 13:35:42 -0400 |
commit | 1d5aac573895ae6a9eee0f298fb521391e5d596d (patch) | |
tree | e74aefe24052ad2ec257469f9c44288daab2775a | |
parent | 54a98542e25a8e186bff4b64da093c350f14f7ae (diff) | |
parent | eaf7d56606340599f80d8cc3753df215593a7ad8 (diff) | |
download | sdl_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.java | 18 |
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) {
|