Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29aebff4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I88886146,I1c076c7f into pi-dev

* changes:
  LE Create Connection Complete - crash on Command Disallowed
  Fix race condition in LE Create Connection Cancel handling
parents 3f6171c4 7d98f498
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -2016,9 +2016,20 @@ void btm_ble_conn_complete(uint8_t* p, UNUSED_ATTR uint16_t evt_len,
 *
 *****************************************************************************/
void btm_ble_create_ll_conn_complete(uint8_t status) {
  if (status != HCI_SUCCESS) {
  if (status == HCI_SUCCESS) return;

  btm_ble_set_conn_st(BLE_CONN_IDLE);
  btm_ble_update_mode_operation(HCI_ROLE_UNKNOWN, NULL, status);

  LOG(WARNING) << "LE Create Connection attempt failed, status="
               << loghex(status);

  if (status == HCI_ERR_COMMAND_DISALLOWED) {
    /* There is already either direct connect, or whitelist connection
     * pending, but we don't know which one, or to which state should we
     * transition now. This can be triggered only in case of rare race
     * condition. Crash to recover. */
    LOG(FATAL) << "LE Create Connection - command disallowed";
  }
}
/*****************************************************************************
+4 −2
Original line number Diff line number Diff line
@@ -352,10 +352,12 @@ void btm_ble_create_conn_cancel_complete(uint8_t* p) {
    /* This is a sign that logic around keeping connection state is broken */
    LOG(ERROR)
        << "Attempt to cancel LE connection, when no connection is pending.";
    if (btm_ble_get_conn_st() == BLE_CONN_CANCEL) {
      btm_ble_set_conn_st(BLE_CONN_IDLE);
      btm_ble_update_mode_operation(HCI_ROLE_UNKNOWN, nullptr, status);
    }
  }
}

void btm_send_hci_create_connection(
    uint16_t scan_int, uint16_t scan_win, uint8_t init_filter_policy,