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

Commit d40e2da5 authored by Hansong Zhang's avatar Hansong Zhang
Browse files

Fix L2CAP Cert and AclManagerFacade

* Store RetransmissionAndFlowControlMode from remote config request
* Send correct config request from cert
* SendAclPacket: Hold lock until packet has been dequeued to avoid
  double RegisterEnqueue

Test: cert/run --device
Bug: 150174451
Change-Id: I2c31f336a19d4a3e1e05efb56c20b9e4dbdd98a7
parent 49287ca1
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -121,11 +121,11 @@ class AclManagerFacadeService : public AclManagerFacade::Service,
            facade_handler_, common::Bind(&AclManagerFacadeService::enqueue_packet, common::Unretained(this),
                                          common::Unretained(request), common::Passed(std::move(promise))));
      }
    }
      auto status = future.wait_for(std::chrono::milliseconds(1000));
      if (status != std::future_status::ready) {
        return ::grpc::Status(::grpc::StatusCode::RESOURCE_EXHAUSTED, "Can't send packet");
      }
    }
    return ::grpc::Status::OK;
  }

+1 −1
Original line number Diff line number Diff line
@@ -162,7 +162,7 @@ class CertL2cap(Closable):
    def turn_on_ertm(self, tx_window_size=10, max_transmit=20):
        self.ertm_option = l2cap_packets.RetransmissionAndFlowControlConfigurationOption(
        )
        self.ertm_option.mode = l2cap_packets.RetransmissionAndFlowControlModeOption.L2CAP_BASIC
        self.ertm_option.mode = l2cap_packets.RetransmissionAndFlowControlModeOption.ENHANCED_RETRANSMISSION
        self.ertm_option.tx_window_size = tx_window_size
        self.ertm_option.max_transmit = max_transmit
        self.ertm_option.retransmission_time_out = 2000
+1 −0
Original line number Diff line number Diff line
@@ -309,6 +309,7 @@ void ClassicSignallingManager::OnConfigurationRequest(SignalId signal_id, Cid ci
          config->monitor_time_out_ = 12000;
        }
        configuration_state.remote_retransmission_and_flow_control_ = *config;
        configuration_state.retransmission_and_flow_control_mode_ = config->mode_;
        rsp_options.emplace_back(std::make_unique<RetransmissionAndFlowControlConfigurationOption>(*config));
        break;
      }