diff options
author | Thomas Heike <t.heike@codeelements.de> | 2018-03-12 11:15:16 +0100 |
---|---|---|
committer | Thomas Heike <t.heike@codeelements.de> | 2018-03-12 11:15:16 +0100 |
commit | eaf7d56606340599f80d8cc3753df215593a7ad8 (patch) | |
tree | 6f56b21a72f50d417e20500c0753519180b3115f | |
parent | 33c2c9fdedf5d4b30b77b651ebe98d18fe54f1a6 (diff) | |
download | sdl_android-eaf7d56606340599f80d8cc3753df215593a7ad8.tar.gz |
#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) {
|