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

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

Merge "RFCOMM: Handle failed connection request" am: f9e5924c

Original change: https://android-review.googlesource.com/c/platform/system/bt/+/1664098

Change-Id: I269d56ccfe71b5304c26a92f468c9352e8cafa8b
parents ee6d6282 f9e5924c
Loading
Loading
Loading
Loading
+33 −28
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ static void rfc_mx_conf_cnf(tRFC_MCB* p_mcb, uint16_t result);
void rfc_mx_sm_execute(tRFC_MCB* p_mcb, uint16_t event, void* p_data) {
  CHECK(p_mcb != nullptr) << __func__ << ": NULL mcb for event " << event;

  LOG_DEBUG(
  LOG_INFO(
      "RFCOMM peer:%s event:%d state:%s", PRIVATE_ADDRESS(p_mcb->bd_addr),
      event,
      rfcomm_mx_state_text(static_cast<tRFC_MX_STATE>(p_mcb->state)).c_str());
@@ -563,6 +563,9 @@ void rfc_on_l2cap_error(uint16_t lcid, uint16_t result) {
  if (p_mcb == nullptr) return;

  if (result == L2CAP_CONN_OTHER_ERROR) {
    /* if peer rejects our connect request but peer's connect request is pending
     */
    if (p_mcb->pending_lcid) {
      RFCOMM_TRACE_DEBUG(
          "RFCOMM_ConnectCnf retry as acceptor on pending LCID(0x%x)",
          p_mcb->pending_lcid);
@@ -584,15 +587,17 @@ void rfc_on_l2cap_error(uint16_t lcid, uint16_t result) {
          p_mcb->port_handles[i] = 0;
          p_mcb->port_handles[i + 1] = handle;
          rfc_cb.port.port[handle - 1].dlci += 1;
        RFCOMM_TRACE_DEBUG("RFCOMM MX, port_handle=%d, DLCI[%d->%d]", handle, i,
                           rfc_cb.port.port[handle - 1].dlci);
          RFCOMM_TRACE_DEBUG("RFCOMM MX, port_handle=%d, DLCI[%d->%d]", handle,
                             i, rfc_cb.port.port[handle - 1].dlci);
        }
      }

      rfc_mx_sm_execute(p_mcb, RFC_MX_EVENT_CONN_IND, nullptr);
      return;
    }

  if (result == L2CAP_CFG_FAILED_NO_REASON) {
    p_mcb->lcid = lcid;
    rfc_mx_sm_execute(p_mcb, RFC_MX_EVENT_CONN_CNF, &result);
  } else if (result == L2CAP_CFG_FAILED_NO_REASON) {
    LOG(ERROR) << __func__ << ": failed to configure L2CAP for "
               << p_mcb->bd_addr;
    if (p_mcb->is_initiator) {