From 51979169837eae718fa2887f8ab14a9e4a336d63 Mon Sep 17 00:00:00 2001 From: sindney <346567691@qq.com> Date: Wed, 30 Sep 2020 20:01:02 +0800 Subject: [PATCH] Fix BLEClient disconnect bug (#3876) By default the disconnect is broadcasted to every clients. So if you call disconnect on one connected client, they'll all be disconnected if we don't filter the event by conn_id. --- libraries/BLE/src/BLEClient.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libraries/BLE/src/BLEClient.cpp b/libraries/BLE/src/BLEClient.cpp index 436813f8..e13b8d62 100644 --- a/libraries/BLE/src/BLEClient.cpp +++ b/libraries/BLE/src/BLEClient.cpp @@ -178,6 +178,8 @@ void BLEClient::gattClientEventHandler( // - uint16_t conn_id // - esp_bd_addr_t remote_bda case ESP_GATTC_DISCONNECT_EVT: { + if (evtParam->disconnect.conn_id != m_conn_id) + break; // If we receive a disconnect event, set the class flag that indicates that we are // no longer connected. m_isConnected = false;