From 38eabf9d704de2ddfa240e00290a4187c64b6e8f Mon Sep 17 00:00:00 2001 From: geeksville Date: Fri, 5 Jun 2020 12:11:35 -0700 Subject: [PATCH] fix an autobug: We gracefully handle safe being null because this can occur if someone has unpaired from our device - just abandon the reconnect attempt --- .../mesh/service/RadioInterfaceService.kt | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt b/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt index 22194f60a..e316b151f 100644 --- a/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/RadioInterfaceService.kt @@ -413,14 +413,20 @@ class RadioInterfaceService : Service(), Logging { DataPair(1) ) - warn("Forcing disconnect and hopefully device will comeback (disabling forced refresh)") - hasForcedRefresh = true - ignoreException { - safe!!.closeConnection() + /// We gracefully handle safe being null because this can occur if someone has unpaired from our device - just abandon the reconnect attempt + val s = safe + if (s != null) { + warn("Forcing disconnect and hopefully device will comeback (disabling forced refresh)") + hasForcedRefresh = true + ignoreException { + s.closeConnection() + } + delay(1000) // Give some nasty time for buggy BLE stacks to shutdown (500ms was not enough) + warn("Attempting reconnect") + startConnect() + } else { + warn("Abandoning reconnect because safe==null, someone must have closed the device") } - delay(1000) // Give some nasty time for buggy BLE stacks to shutdown (500ms was not enough) - warn("Attempting reconnect") - startConnect() } /// We only try to set MTU once, because some buggy implementations fail