aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Brabham <optedoblivion@google.com>2021-07-28 17:48:18 -0700
committerMartin Brabham <optedoblivion@google.com>2021-07-28 17:53:28 -0700
commitcb7c6bb5bd8cc6c1b85a6528509bd5f2a504d650 (patch)
tree025935083a32c70bd36ee38e8f3d41449a9c85d0
parentabff1a39e9433a7cd8e294b01ff1d9a0dcf94290 (diff)
downloadbt-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.cc19
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);