diff options
-rw-r--r-- | system/bta/gatt/bta_gattc_act.cc | 10 |
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 |