summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/bta/gatt/bta_gattc_act.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/system/bta/gatt/bta_gattc_act.cc b/system/bta/gatt/bta_gattc_act.cc
index d6994c9622..d23ed8e01f 100644
--- a/system/bta/gatt/bta_gattc_act.cc
+++ b/system/bta/gatt/bta_gattc_act.cc
@@ -709,10 +709,16 @@ void bta_gattc_disc_close(tBTA_GATTC_CLCB* p_clcb,
const tBTA_GATTC_DATA* p_data) {
log::verbose("Discovery cancel conn_id={}", loghex(p_clcb->bta_conn_id));
- if (p_clcb->disc_active)
+ if (p_clcb->disc_active ||
+ (IS_FLAG_ENABLED(gatt_rediscover_on_canceled) &&
+ (p_clcb->request_during_discovery ==
+ BTA_GATTC_DISCOVER_REQ_READ_DB_HASH ||
+ p_clcb->request_during_discovery ==
+ BTA_GATTC_DISCOVER_REQ_READ_DB_HASH_FOR_SVC_CHG))) {
bta_gattc_reset_discover_st(p_clcb->p_srcb, GATT_ERROR);
- else
+ } else {
p_clcb->state = BTA_GATTC_CONN_ST;
+ }
// This function only gets called as the result of a BTA_GATTC_API_CLOSE_EVT
// while in the BTA_GATTC_DISCOVER_ST state. Once the state changes, the