Remove from filter accept list upon cancel connect
connection::manager no longer arbitrates filter
accept list manipulation
Bug: 237600252
Test: gd/cert/run, testplans/1181383
Tag: #refactor
BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines
Ignore-AOSP-First: Cherry-pick
Merged-In: I2d0d2d64c621d565d1ed985da4b061563029def1
Change-Id: I2d0d2d64c621d565d1ed985da4b061563029def1
(cherry picked from commit 32a931edd0c3e41c14f91e2e4c1679da00bddbd1)
Merged-In: I2d0d2d64c621d565d1ed985da4b061563029def1
diff --git a/system/stack/gatt/gatt_main.cc b/system/stack/gatt/gatt_main.cc
index f2d0637..df6a056 100644
--- a/system/stack/gatt/gatt_main.cc
+++ b/system/stack/gatt/gatt_main.cc
@@ -249,10 +249,15 @@
bool gatt_disconnect(tGATT_TCB* p_tcb) {
VLOG(1) << __func__;
- if (!p_tcb) return false;
+ if (!p_tcb) {
+ LOG_WARN("Unable to disconnect an unknown device");
+ return false;
+ }
tGATT_CH_STATE ch_state = gatt_get_ch_state(p_tcb);
if (ch_state == GATT_CH_CLOSING) {
+ LOG_DEBUG("Device already in closing state peer:%s",
+ PRIVATE_ADDRESS(p_tcb->peer_bda));
VLOG(1) << __func__ << " already in closing state";
return true;
}
@@ -262,8 +267,16 @@
L2CA_RemoveFixedChnl(L2CAP_ATT_CID, p_tcb->peer_bda);
gatt_set_ch_state(p_tcb, GATT_CH_CLOSING);
} else {
- connection_manager::direct_connect_remove(CONN_MGR_ID_L2CAP,
- p_tcb->peer_bda);
+ if (!connection_manager::direct_connect_remove(CONN_MGR_ID_L2CAP,
+ p_tcb->peer_bda)) {
+ BTM_AcceptlistRemove(p_tcb->peer_bda);
+ LOG_INFO(
+ "GATT connection manager has no record but removed filter "
+ "acceptlist "
+ "gatt_if:%hhu peer:%s",
+ static_cast<uint8_t>(CONN_MGR_ID_L2CAP),
+ PRIVATE_ADDRESS(p_tcb->peer_bda));
+ }
gatt_cleanup_upon_disc(p_tcb->peer_bda, GATT_CONN_TERMINATE_LOCAL_HOST,
p_tcb->transport);
}