diff --git a/ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java b/ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java index 977954b8..424cbe56 100644 --- a/ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java +++ b/ble/src/main/java/no/nordicsemi/android/ble/BleManagerHandler.java @@ -82,7 +82,7 @@ abstract class BleManagerHandler extends RequestHandler { private final Object LOCK = new Object(); private BluetoothDevice bluetoothDevice; - private BluetoothGatt bluetoothGatt; + /* package */ BluetoothGatt bluetoothGatt; private BleManager manager; private BleServerManager serverManager; private Handler handler; diff --git a/ble/src/main/java/no/nordicsemi/android/ble/BleServerManager.java b/ble/src/main/java/no/nordicsemi/android/ble/BleServerManager.java index b106d19a..74c006f3 100644 --- a/ble/src/main/java/no/nordicsemi/android/ble/BleServerManager.java +++ b/ble/src/main/java/no/nordicsemi/android/ble/BleServerManager.java @@ -738,7 +738,9 @@ public void onConnectionStateChange(@NonNull final BluetoothDevice device, final log(Log.WARN, "[Server] " + device.getAddress() + " has disconnected connected with status: " + status); } final BleManagerHandler handler = getRequestHandler(device); - if (handler != null) { + if (handler != null && handler.bluetoothGatt == null) { + // There is no client connection to the device. + // We have to notify disconnection manually. handler.notifyDeviceDisconnected(device, status); } if (serverObserver != null)