Have BLECLient gattc event handlers verify conn_id (#4064)

Co-authored-by: Me No Dev <me-no-dev@users.noreply.github.com>
This commit is contained in:
buxtronix 2020-09-30 22:21:59 +10:00 committed by GitHub
parent 342b9cf2d8
commit 1f6b0b35f8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -178,8 +178,7 @@ void BLEClient::gattClientEventHandler(
// - uint16_t conn_id // - uint16_t conn_id
// - esp_bd_addr_t remote_bda // - esp_bd_addr_t remote_bda
case ESP_GATTC_DISCONNECT_EVT: { case ESP_GATTC_DISCONNECT_EVT: {
if (evtParam->disconnect.conn_id != m_conn_id) if (evtParam->disconnect.conn_id != getConnId()) break;
break;
// If we receive a disconnect event, set the class flag that indicates that we are // If we receive a disconnect event, set the class flag that indicates that we are
// no longer connected. // no longer connected.
m_isConnected = false; m_isConnected = false;
@ -229,6 +228,7 @@ void BLEClient::gattClientEventHandler(
} // ESP_GATTC_REG_EVT } // ESP_GATTC_REG_EVT
case ESP_GATTC_CFG_MTU_EVT: case ESP_GATTC_CFG_MTU_EVT:
if (evtParam->cfg_mtu.conn_id != getConnId()) break;
if(evtParam->cfg_mtu.status != ESP_GATT_OK) { if(evtParam->cfg_mtu.status != ESP_GATT_OK) {
log_e("Config mtu failed"); log_e("Config mtu failed");
} }
@ -236,6 +236,7 @@ void BLEClient::gattClientEventHandler(
break; break;
case ESP_GATTC_CONNECT_EVT: { case ESP_GATTC_CONNECT_EVT: {
if (evtParam->connect.conn_id != getConnId()) break;
BLEDevice::updatePeerDevice(this, true, m_gattc_if); BLEDevice::updatePeerDevice(this, true, m_gattc_if);
esp_err_t errRc = esp_ble_gattc_send_mtu_req(gattc_if, evtParam->connect.conn_id); esp_err_t errRc = esp_ble_gattc_send_mtu_req(gattc_if, evtParam->connect.conn_id);
if (errRc != ESP_OK) { if (errRc != ESP_OK) {
@ -257,6 +258,7 @@ void BLEClient::gattClientEventHandler(
// - uint16_t conn_id // - uint16_t conn_id
// //
case ESP_GATTC_SEARCH_CMPL_EVT: { case ESP_GATTC_SEARCH_CMPL_EVT: {
if (evtParam->search_cmpl.conn_id != getConnId()) break;
esp_ble_gattc_cb_param_t* p_data = (esp_ble_gattc_cb_param_t*)evtParam; esp_ble_gattc_cb_param_t* p_data = (esp_ble_gattc_cb_param_t*)evtParam;
if (p_data->search_cmpl.status != ESP_GATT_OK){ if (p_data->search_cmpl.status != ESP_GATT_OK){
log_e("search service failed, error status = %x", p_data->search_cmpl.status); log_e("search service failed, error status = %x", p_data->search_cmpl.status);
@ -287,6 +289,7 @@ void BLEClient::gattClientEventHandler(
// - esp_gatt_id_t srvc_id // - esp_gatt_id_t srvc_id
// //
case ESP_GATTC_SEARCH_RES_EVT: { case ESP_GATTC_SEARCH_RES_EVT: {
if (evtParam->search_res.conn_id != getConnId()) break;
BLEUUID uuid = BLEUUID(evtParam->search_res.srvc_id); BLEUUID uuid = BLEUUID(evtParam->search_res.srvc_id);
BLERemoteService* pRemoteService = new BLERemoteService( BLERemoteService* pRemoteService = new BLERemoteService(
evtParam->search_res.srvc_id, evtParam->search_res.srvc_id,