From 00dcd8d30df203c411b513f55297c5c7f5688295 Mon Sep 17 00:00:00 2001 From: h2zero Date: Sat, 1 Aug 2026 11:53:16 -0600 Subject: [PATCH] [Bugfix] Only call scan deinit callback if nimble was stopped. * Add error handling if nimble failed to stop. --- src/NimBLEDevice.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/NimBLEDevice.cpp b/src/NimBLEDevice.cpp index d698d9cc..e125aeb9 100644 --- a/src/NimBLEDevice.cpp +++ b/src/NimBLEDevice.cpp @@ -1029,14 +1029,13 @@ bool NimBLEDevice::init(const std::string& deviceName) { bool NimBLEDevice::deinit(bool clearAll) { int rc = 0; if (m_initialized) { -# if MYNEWT_VAL(BLE_ROLE_OBSERVER) - if (NimBLEDevice::m_pScan != nullptr) { - NimBLEDevice::m_pScan->onHostDeinit(); - } -# endif - rc = nimble_port_stop(); if (rc == 0) { +# if MYNEWT_VAL(BLE_ROLE_OBSERVER) + if (NimBLEDevice::m_pScan != nullptr) { + NimBLEDevice::m_pScan->onHostDeinit(); + } +# endif nimble_port_deinit(); # ifndef USING_NIMBLE_ARDUINO_HEADERS # if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0) @@ -1048,6 +1047,9 @@ bool NimBLEDevice::deinit(bool clearAll) { # endif m_initialized = false; m_synced = false; + } else { + NIMBLE_LOGE(LOG_TAG, "nimble_port_stop() failed with error: %d", rc); + return false; } }