diff options
author | Martin Brabham <optedoblivion@google.com> | 2021-07-28 17:48:18 -0700 |
---|---|---|
committer | Martin Brabham <optedoblivion@google.com> | 2021-07-28 17:53:28 -0700 |
commit | cb7c6bb5bd8cc6c1b85a6528509bd5f2a504d650 (patch) | |
tree | 025935083a32c70bd36ee38e8f3d41449a9c85d0 | |
parent | abff1a39e9433a7cd8e294b01ff1d9a0dcf94290 (diff) | |
download | bt-cb7c6bb5bd8cc6c1b85a6528509bd5f2a504d650.tar.gz |
Also remove entry during delete in addition to clear
Bug: 194432570
Test: Manual test app; nRF connect
Tag: #feature
Change-Id: I17a1a8b1ba2b305527ae74bb8ad5f6e1258e870e
Merged-In: I17a1a8b1ba2b305527ae74bb8ad5f6e1258e870e
-rw-r--r-- | stack/btm/btm_ble_adv_filter.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/stack/btm/btm_ble_adv_filter.cc b/stack/btm/btm_ble_adv_filter.cc index e9e88343b..08773ab48 100644 --- a/stack/btm/btm_ble_adv_filter.cc +++ b/stack/btm/btm_ble_adv_filter.cc @@ -854,6 +854,25 @@ void BTM_BleAdvFilterParamSetup( FROM_HERE, HCI_BLE_ADV_FILTER, param, (uint8_t)(BTM_BLE_ADV_FILT_META_HDR_LENGTH), base::Bind(&btm_flt_update_cb, BTM_BLE_META_PF_FEAT_SEL, cb)); + + auto entry = remove_me_later_map.find(filt_index); + if (entry != remove_me_later_map.end()) { + LOG_WARN("Replacing existing filter index entry with new address"); + // If device is not bonded, then try removing the device + // If the device doesn't get removed then it is currently connected + // (may be pairing?) If we do delete the device we want to erase the + // filter index so we can replace it If the device is bonded, we + // want to erase the filter index so we don't delete it in the later + // BTM_LE_PF_clear call. + if (!btm_sec_is_a_bonded_dev(entry->second)) { + if (!BTM_SecDeleteDevice(entry->second)) { + LOG_WARN("Unable to remove device, still connected."); + return; + } + } + remove_me_later_map.erase(filt_index); + } + } else if (BTM_BLE_SCAN_COND_CLEAR == action) { /* Deallocate all filters here */ btm_ble_dealloc_addr_filter_counter(NULL, BTM_BLE_PF_TYPE_ALL); |