2727#include " quiche/quic/core/quic_time.h"
2828#include " quiche/quic/core/quic_types.h"
2929#include " quiche/quic/core/quic_versions.h"
30- #include " quiche/quic/moqt/moqt_messages.h"
3130#include " quiche/quic/moqt/moqt_quic_config.h"
3231#include " quiche/quic/moqt/moqt_session.h"
32+ #include " quiche/quic/moqt/moqt_session_interface.h"
3333#include " quiche/quic/platform/api/quic_socket_address.h"
3434#include " quiche/quic/tools/quic_simple_crypto_server_stream_helper.h"
3535#include " quiche/common/quiche_status_utils.h"
@@ -47,8 +47,10 @@ std::string GenerateRandomTokenSecret() {
4747}
4848
4949quic::WebTransportHandlerFactoryCallback CreateWebTransportCallback (
50- MoqtIncomingSessionCallback callback, quic::QuicEventLoop* event_loop) {
51- return [event_loop = event_loop, callback = std::move (callback)](
50+ MoqtIncomingSessionCallback callback, quic::QuicEventLoop* event_loop,
51+ const MoqtSessionParameters& session_parameters) {
52+ return [event_loop = event_loop, callback = std::move (callback),
53+ parameters = session_parameters](
5254 webtransport::Session* session,
5355 const quic::WebTransportIncomingRequestDetails& details)
5456 -> absl::StatusOr<quic::WebTransportConnectResponse> {
@@ -58,8 +60,6 @@ quic::WebTransportHandlerFactoryCallback CreateWebTransportCallback(
5860 if (!configurator.ok ()) {
5961 return configurator.status ();
6062 }
61-
62- MoqtSessionParameters parameters (quic::Perspective::IS_SERVER);
6363 auto moqt_session = std::make_unique<MoqtSession>(
6464 session, parameters, event_loop->CreateAlarmFactory ());
6565 std::move (*configurator)(moqt_session.get ());
@@ -72,7 +72,8 @@ quic::WebTransportHandlerFactoryCallback CreateWebTransportCallback(
7272} // namespace
7373
7474MoqtServer::MoqtServer (std::unique_ptr<quic::ProofSource> proof_source,
75- MoqtIncomingSessionCallback callback)
75+ MoqtIncomingSessionCallback callback,
76+ MoqtSessionParameters session_parameters)
7677 : config_(GenerateQuicConfig()),
7778 crypto_config_ (GenerateRandomTokenSecret(),
7879 quic::QuicRandom::GetInstance(), std::move(proof_source),
@@ -86,9 +87,11 @@ MoqtServer::MoqtServer(std::unique_ptr<quic::ProofSource> proof_source,
8687 std::make_unique<quic::QuicSimpleCryptoServerStreamHelper>(),
8788 event_loop_->CreateAlarmFactory(),
8889 quic::kQuicDefaultConnectionIdLength,
89- connection_id_generator_) {
90- dispatcher_.parameters ().handler_factory =
91- CreateWebTransportCallback (std::move (callback), event_loop_.get ());
90+ connection_id_generator_),
91+ session_parameters_(session_parameters) {
92+ session_parameters_.perspective = quic::Perspective::IS_SERVER;
93+ dispatcher_.parameters ().handler_factory = CreateWebTransportCallback (
94+ std::move (callback), event_loop_.get (), session_parameters_);
9295 dispatcher_.parameters ().subprotocol_callback =
9396 +[](absl::Span<const absl::string_view> subprotocols) {
9497 return absl::c_find (subprotocols, kDefaultMoqtVersion ) -
0 commit comments