diff --git a/app/src/main/java/com/geeksville/mesh/service/BluetoothInterface.kt b/app/src/main/java/com/geeksville/mesh/service/BluetoothInterface.kt index a2abf1634..6aa081938 100644 --- a/app/src/main/java/com/geeksville/mesh/service/BluetoothInterface.kt +++ b/app/src/main/java/com/geeksville/mesh/service/BluetoothInterface.kt @@ -409,9 +409,12 @@ class BluetoothInterface(val service: RadioInterfaceService, val address: String } } } catch (ex: BLEException) { - scheduleReconnect( - "Unexpected error discovering services, forcing disconnect $ex" - ) + if (s.gatt == null) + warn("GATT was closed while discovering, assume we are shutting down") + else + scheduleReconnect( + "Unexpected error discovering services, forcing disconnect $ex" + ) } } } diff --git a/app/src/main/java/com/geeksville/mesh/service/SafeBluetooth.kt b/app/src/main/java/com/geeksville/mesh/service/SafeBluetooth.kt index 1c56ad35a..69ff4de7e 100644 --- a/app/src/main/java/com/geeksville/mesh/service/SafeBluetooth.kt +++ b/app/src/main/java/com/geeksville/mesh/service/SafeBluetooth.kt @@ -613,7 +613,8 @@ class SafeBluetooth(private val context: Context, private val device: BluetoothD private fun queueDiscoverServices(cont: Continuation, timeout: Long = 0) { queueWork("discover", cont, timeout) { - gatt?.discoverServices() ?: throw BLEException("GATT is null") + gatt?.discoverServices() + ?: false // throw BLEException("GATT is null") - if we return false here it is probably because the device is being torn down } }