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

Commit b246df1f authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Don't ignore encryption change events while in IDLE state" am: 99d436ee

parents 37730477 99d436ee
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -163,6 +163,18 @@ static bool concurrentPeerAuthIsEnabled() {
  return sCONCURRENT_PEER_AUTH_IS_ENABLED;
  return sCONCURRENT_PEER_AUTH_IS_ENABLED;
}
}


/**
 * Whether we should handle encryption change events from a peer device, while
 * we are in the IDLE state. This matters if we are waiting to retry encryption
 * following an LMP timeout, and then we get an encryption change event from the
 * peer.
 */
static bool handleUnexpectedEncryptionChange() {
  static const bool sHandleUnexpectedEncryptionChange = osi_property_get_bool(
      "bluetooth.btm.sec.handle_unexpected_encryption_change.enabled", false);
  return sHandleUnexpectedEncryptionChange;
}

void NotifyBondingCanceled(tBTM_STATUS btm_status) {
void NotifyBondingCanceled(tBTM_STATUS btm_status) {
  if (btm_cb.api.p_bond_cancel_cmpl_callback) {
  if (btm_cb.api.p_bond_cancel_cmpl_callback) {
    btm_cb.api.p_bond_cancel_cmpl_callback(BTM_SUCCESS);
    btm_cb.api.p_bond_cancel_cmpl_callback(BTM_SUCCESS);
@@ -3443,12 +3455,16 @@ void btm_sec_encrypt_change(uint16_t handle, tHCI_STATUS status,
                      __func__, p_dev_rec, p_dev_rec->p_callback);
                      __func__, p_dev_rec, p_dev_rec->p_callback);
      p_dev_rec->p_callback = NULL;
      p_dev_rec->p_callback = NULL;
      l2cu_resubmit_pending_sec_req(&p_dev_rec->bd_addr);
      l2cu_resubmit_pending_sec_req(&p_dev_rec->bd_addr);
      return;
    } else if (!concurrentPeerAuthIsEnabled() &&
    } else if (!concurrentPeerAuthIsEnabled() &&
               p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) {
               p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) {
      p_dev_rec->sec_state = BTM_SEC_STATE_IDLE;
      p_dev_rec->sec_state = BTM_SEC_STATE_IDLE;
      return;
    }
    }
    if (!handleUnexpectedEncryptionChange()) {
      return;
      return;
    }
    }
  }


  p_dev_rec->sec_state = BTM_SEC_STATE_IDLE;
  p_dev_rec->sec_state = BTM_SEC_STATE_IDLE;
  /* If encryption setup failed, notify the waiting layer */
  /* If encryption setup failed, notify the waiting layer */