Update QuicDispatcher interfaces to explicitly take ConnectionIdGeneratorInterface. This will be necessary for individual connections to install the non-default generator, as required by GFE. Also, make QuicDispatcher::connection_id_generator() virtual. It will be overloaded by GfeQuicDispatcher in a later CL. This requires renaming it to ConnectionIdGenerator(). PiperOrigin-RevId: 561949642
diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc index 57b59a0..5beeeff 100644 --- a/quiche/quic/core/quic_dispatcher.cc +++ b/quiche/quic/core/quic_dispatcher.cc
@@ -1298,7 +1298,7 @@ std::string alpn = SelectAlpn(parsed_chlo.alpns); std::unique_ptr<QuicSession> session = CreateQuicSession(*server_connection_id, self_address, peer_address, alpn, - version, parsed_chlo); + version, parsed_chlo, ConnectionIdGenerator()); if (ABSL_PREDICT_FALSE(session == nullptr)) { QUIC_BUG(quic_bug_10287_8) << "CreateQuicSession returned nullptr for " << *server_connection_id
diff --git a/quiche/quic/core/quic_dispatcher.h b/quiche/quic/core/quic_dispatcher.h index c5f4c1d..0c0fa9d 100644 --- a/quiche/quic/core/quic_dispatcher.h +++ b/quiche/quic/core/quic_dispatcher.h
@@ -191,8 +191,8 @@ QuicConnectionId server_connection_id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view alpn, - const ParsedQuicVersion& version, - const ParsedClientHello& parsed_chlo) = 0; + const ParsedQuicVersion& version, const ParsedClientHello& parsed_chlo, + ConnectionIdGeneratorInterface& connection_id_generator) = 0; // Tries to validate and dispatch packet based on available information. // Returns true if packet is dropped or successfully dispatched (e.g., @@ -345,7 +345,7 @@ virtual void MaybeSendVersionNegotiationPacket( const ReceivedPacketInfo& packet_info); - ConnectionIdGeneratorInterface& connection_id_generator() { + virtual ConnectionIdGeneratorInterface& ConnectionIdGenerator() { return connection_id_generator_; }
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc index bfc8732..6cd5390 100644 --- a/quiche/quic/core/quic_dispatcher_test.cc +++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -69,7 +69,9 @@ using testing::InSequence; using testing::Invoke; using testing::NiceMock; +using testing::Ref; using testing::Return; +using testing::ReturnRef; using testing::WithArg; using testing::WithoutArgs; @@ -139,14 +141,20 @@ new QuicSimpleCryptoServerStreamHelper()), std::make_unique<TestAlarmFactory>(), kQuicDefaultConnectionIdLength, generator), - random_(random) {} + random_(random) { + EXPECT_CALL(*this, ConnectionIdGenerator()) + .WillRepeatedly(ReturnRef(generator)); + } MOCK_METHOD(std::unique_ptr<QuicSession>, CreateQuicSession, (QuicConnectionId connection_id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view alpn, const ParsedQuicVersion& version, - const ParsedClientHello& parsed_chlo), + const ParsedClientHello& parsed_chlo, + ConnectionIdGeneratorInterface& connection_id_generator), + (override)); + MOCK_METHOD(ConnectionIdGeneratorInterface&, ConnectionIdGenerator, (), (override)); struct TestQuicPerPacketContext : public QuicPerPacketContext { @@ -168,6 +176,7 @@ std::string custom_packet_context_; + using QuicDispatcher::ConnectionIdGenerator; using QuicDispatcher::MaybeDispatchPacket; using QuicDispatcher::SetAllowShortInitialServerConnectionIds; using QuicDispatcher::writer; @@ -523,7 +532,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, _, client_address, - Eq(ExpectedAlpnForVersion(version)), _, _)) + Eq(ExpectedAlpnForVersion(version)), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -541,7 +550,7 @@ QuicConnectionId connection_id = TestConnectionId(++connection_id_); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, - CreateQuicSession(connection_id, _, client_address, _, _, _)) + CreateQuicSession(connection_id, _, client_address, _, _, _, _)) .Times(0); expect_generator_is_called_ = false; ProcessFirstFlight(version, client_address, connection_id); @@ -603,10 +612,10 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL( - *dispatcher_, - CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, Eq(ParsedClientHelloForTest()))) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(TestConnectionId(1), _, client_address, + Eq(ExpectedAlpn()), _, + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -620,6 +629,30 @@ ProcessFirstFlight(client_address, TestConnectionId(1)); } +TEST_P(QuicDispatcherTestAllVersions, + TlsClientHelloCreatesSessionWithCorrectConnectionIdGenerator) { + if (version_.UsesQuicCrypto()) { + return; + } + SetAddressToken("hsdifghdsaifnasdpfjdsk"); + + QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); + MockConnectionIdGenerator mock_connection_id_generator; + EXPECT_CALL(*dispatcher_, ConnectionIdGenerator()) + .WillRepeatedly(ReturnRef(mock_connection_id_generator)); + ConnectionIdGeneratorInterface& expected_generator = + mock_connection_id_generator; + EXPECT_CALL(*dispatcher_, + CreateQuicSession( + TestConnectionId(1), _, client_address, Eq(ExpectedAlpn()), _, + Eq(ParsedClientHelloForTest()), Ref(expected_generator))) + .WillOnce(Return(ByMove(CreateSession( + dispatcher_.get(), config_, TestConnectionId(1), client_address, + &mock_helper_, &mock_alarm_factory_, &crypto_config_, + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); + ProcessFirstFlight(client_address, TestConnectionId(1)); +} + TEST_P(QuicDispatcherTestAllVersions, VariableServerConnectionIdLength) { QuicConnectionId old_id = TestConnectionId(1); // Return a connection ID that is not expected_server_connection_id_length_ @@ -634,7 +667,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, CreateQuicSession(new_id, _, client_address, Eq(ExpectedAlpn()), - _, Eq(ParsedClientHelloForTest()))) + _, Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, new_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -699,10 +732,10 @@ << "No session should be created before the rest of the CHLO arrives."; // Processing the second packet should create the new session. - EXPECT_CALL( - *dispatcher_, - CreateQuicSession(new_connection_id, _, client_address, - Eq(ExpectedAlpn()), _, Eq(ParsedClientHelloForTest()))) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(new_connection_id, _, client_address, + Eq(ExpectedAlpn()), _, + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, new_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -740,10 +773,10 @@ TEST_P(QuicDispatcherTestAllVersions, ProcessPackets) { QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL( - *dispatcher_, - CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, Eq(ParsedClientHelloForTest()))) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(TestConnectionId(1), _, client_address, + Eq(ExpectedAlpn()), _, + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -755,10 +788,10 @@ }))); ProcessFirstFlight(client_address, TestConnectionId(1)); - EXPECT_CALL( - *dispatcher_, - CreateQuicSession(TestConnectionId(2), _, client_address, - Eq(ExpectedAlpn()), _, Eq(ParsedClientHelloForTest()))) + EXPECT_CALL(*dispatcher_, + CreateQuicSession(TestConnectionId(2), _, client_address, + Eq(ExpectedAlpn()), _, + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -785,7 +818,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -809,7 +842,7 @@ CreateTimeWaitListManager(); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(TestConnectionId(1), _, _, _, _, _, _, _)) @@ -825,7 +858,7 @@ CreateTimeWaitListManager(); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket(connection_id, _, _, _, _, _, _, _)) .Times(1); @@ -839,7 +872,7 @@ CreateTimeWaitListManager(); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket( TestConnectionId(1), TestConnectionId(2), _, _, _, _, _, _)) @@ -853,7 +886,7 @@ CreateTimeWaitListManager(); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket(_, _, _, _, _, _, _, _)) .Times(0); @@ -877,7 +910,7 @@ CreateTimeWaitListManager(); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket(_, _, _, _, _, _, _, _)) .Times(1); @@ -895,8 +928,8 @@ TEST_P(QuicDispatcherTestAllVersions, Shutdown) { QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, - CreateQuicSession(_, _, client_address, Eq(ExpectedAlpn()), _, _)) + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, client_address, + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -922,7 +955,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); QuicConnectionId connection_id = TestConnectionId(1); EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -959,7 +992,7 @@ QuicConnectionId connection_id = TestConnectionId(1); // Dispatcher forwards all packets for this connection_id to the time wait // list manager. - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, connection_id, _, _, _)) .Times(0); @@ -983,7 +1016,7 @@ short_packet_len, QuicTime::Zero()); QuicReceivedPacket packet2(reinterpret_cast<char*>(valid_size_packet), short_packet_len + 1, QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, AddConnectionIdToTimeWait(_, _)) @@ -1007,7 +1040,7 @@ uint8_t all_zero_packet[1200] = {}; QuicReceivedPacket packet(reinterpret_cast<char*>(all_zero_packet), sizeof(all_zero_packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, AddConnectionIdToTimeWait(_, _)) @@ -1108,7 +1141,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(*generated_connection_id_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, *generated_connection_id_, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1140,7 +1173,7 @@ // validation is still enabled. EXPECT_CALL(*dispatcher_, CreateQuicSession(*generated_connection_id_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, *generated_connection_id_, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1166,7 +1199,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1181,7 +1214,7 @@ generated_connection_id_ = kReturnConnectionId; EXPECT_CALL(*dispatcher_, CreateQuicSession(*generated_connection_id_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, *generated_connection_id_, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1210,7 +1243,7 @@ // dispatcher_ should drop this packet. EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, - client_address, _, _, _)) + client_address, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); @@ -1227,7 +1260,7 @@ // dispatcher_ should drop this packet. EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, - client_address, _, _, _)) + client_address, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); @@ -1248,7 +1281,7 @@ // dispatcher_ should not drop this packet. EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1268,7 +1301,7 @@ // dispatcher_ should drop this packet. EXPECT_CALL(connection_id_generator_, ConnectionIdLength(0x00)) .WillOnce(Return(10)); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, AddConnectionIdToTimeWait(_, _)) @@ -1285,7 +1318,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); // dispatcher_ should drop this packet with invalid connection ID. - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, AddConnectionIdToTimeWait(_, _)) @@ -1309,7 +1342,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendVersionNegotiationPacket( server_connection_id, client_connection_id, @@ -1366,7 +1399,7 @@ 0xC0, 0xFF, 0x00, 0x00, 28, /*destination connection ID length*/ 0x08}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1383,7 +1416,7 @@ 0xC0, 0xFF, 0x00, 0x00, 27, /*destination connection ID length*/ 0x08}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1400,7 +1433,7 @@ 0xC0, 0xFF, 0x00, 0x00, 25, /*destination connection ID length*/ 0x08}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1417,7 +1450,7 @@ 0xC0, 'T', '0', '5', '0', /*destination connection ID length*/ 0x08}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1434,7 +1467,7 @@ 0xC0, 'Q', '0', '4', '9', /*destination connection ID length*/ 0x08}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1451,7 +1484,7 @@ 0xC0, 'Q', '0', '4', '8', /*connection ID length byte*/ 0x50}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1468,7 +1501,7 @@ 0xC0, 'Q', '0', '4', '7', /*connection ID length byte*/ 0x50}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1485,7 +1518,7 @@ 0xC0, 'Q', '0', '4', '5', /*connection ID length byte*/ 0x50}; QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), ABSL_ARRAYSIZE(packet), QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1503,7 +1536,7 @@ QuicReceivedPacket received_packet44(reinterpret_cast<char*>(packet44), kMinPacketSizeForVersionNegotiation, QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1522,7 +1555,7 @@ QuicReceivedPacket received_packet(reinterpret_cast<char*>(packet), kMinPacketSizeForVersionNegotiation, QuicTime::Zero()); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL( *time_wait_list_manager_, SendVersionNegotiationPacket(_, _, /*ietf_quic=*/true, @@ -1555,7 +1588,7 @@ server_connection_id, client_connection_id, /*ietf_quic=*/true, /*use_length_prefix=*/true, _, _, _, _)) .Times(1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); dispatcher_->ProcessPacket(server_address_, client_address, *received_packet); } @@ -1604,7 +1637,7 @@ QuicEncryptedPacket encrypted(packet, sizeof(packet), false); std::unique_ptr<QuicReceivedPacket> received_packet( ConstructReceivedPacket(encrypted, mock_helper_.GetClock()->Now())); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); dispatcher_->ProcessPacket(server_address_, client_address, *received_packet); @@ -1655,7 +1688,7 @@ sizeof(packet), false); std::unique_ptr<QuicReceivedPacket> received_packet( ConstructReceivedPacket(encrypted, mock_helper_.GetClock()->Now())); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); dispatcher_->ProcessPacket(server_address_, client_address, *received_packet); @@ -1706,7 +1739,7 @@ sizeof(packet), false); std::unique_ptr<QuicReceivedPacket> received_packet( ConstructReceivedPacket(encrypted, mock_helper_.GetClock()->Now())); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); dispatcher_->ProcessPacket(server_address_, client_address, *received_packet); @@ -1728,7 +1761,7 @@ CreateTimeWaitListManager(); QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, SendPacket(_, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, AddConnectionIdToTimeWait(_, _)) .Times(0); @@ -1791,7 +1824,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1809,7 +1842,7 @@ // No more new connections afterwards. EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(2), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .Times(0u); expect_generator_is_called_ = false; ProcessFirstFlight(client_address, TestConnectionId(2)); @@ -1831,7 +1864,7 @@ // No more new connections afterwards. EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(2), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .Times(0u); expect_generator_is_called_ = false; ProcessFirstFlight(client_address, TestConnectionId(2)); @@ -1842,7 +1875,7 @@ expect_generator_is_called_ = true; EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -1883,7 +1916,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); QuicConnectionId connection_id = TestConnectionId(1); - EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _)).Times(0); + EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _, _, _, _)).Times(0); EXPECT_CALL(*time_wait_list_manager_, ProcessPacket(_, _, _, _, _, _)) .Times(0); EXPECT_CALL(*time_wait_list_manager_, AddConnectionIdToTimeWait(_, _)) @@ -1925,7 +1958,7 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &helper_, &alarm_factory_, &crypto_config_, @@ -1938,7 +1971,7 @@ ProcessFirstFlight(client_address, TestConnectionId(1)); EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &helper_, &alarm_factory_, &crypto_config_, @@ -2205,7 +2238,7 @@ void AddConnection1() { QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &helper_, &alarm_factory_, &crypto_config_, @@ -2221,7 +2254,7 @@ void AddConnection2() { QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 2); EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &helper_, &alarm_factory_, &crypto_config_, @@ -2520,7 +2553,7 @@ .WillOnce(Return(absl::nullopt)); EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_addr_, Eq(ExpectedAlpn()), _, - Eq(ParsedClientHelloForTest()))) + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2555,7 +2588,7 @@ MaybeReplaceConnectionId(conn_id, version_)) .WillOnce(Return(absl::nullopt)); EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2606,7 +2639,7 @@ MaybeReplaceConnectionId(conn_id, version_)) .WillOnce(Return(absl::nullopt)); EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_address, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2631,7 +2664,7 @@ TEST_P(BufferedPacketStoreTest, DeliverEmptyPackets) { QuicConnectionId conn_id = TestConnectionId(1); EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2654,7 +2687,7 @@ MaybeReplaceConnectionId(conn_id, version_)) .WillOnce(Return(absl::nullopt)); EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .Times(1) // Only triggered by 1st CHLO. .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_addr_, &mock_helper_, @@ -2724,7 +2757,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, Eq(ExpectedAlpn()), _, - Eq(ParsedClientHelloForTest()))) + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2764,7 +2797,7 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, Eq(ExpectedAlpn()), _, - Eq(ParsedClientHelloForTest()))) + Eq(ParsedClientHelloForTest()), _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2783,7 +2816,7 @@ .Times(0); EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(kNumCHLOs), _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .Times(0); while (store->HasChlosBuffered()) { @@ -2803,7 +2836,7 @@ if (conn_id <= kMaxNumSessionsToCreate) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2831,7 +2864,7 @@ // Reset counter and process buffered CHLO. EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection, _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, last_connection, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2857,7 +2890,7 @@ if (conn_id <= kMaxNumSessionsToCreate) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2886,7 +2919,7 @@ // Reset counter and process buffered CHLO. EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection_id, _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, last_connection_id, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, @@ -2922,7 +2955,7 @@ if (conn_id <= kMaxNumSessionsToCreate + 1) { EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, - Eq(ExpectedAlpn()), _, _)) + Eq(ExpectedAlpn()), _, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2966,7 +2999,7 @@ EXPECT_CALL( *dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, - Eq(ExpectedAlpnForVersion(version)), version, _)) + Eq(ExpectedAlpnForVersion(version)), version, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, @@ -2993,7 +3026,7 @@ EXPECT_CALL( *dispatcher_, CreateQuicSession(TestConnectionId(conn_id), _, client_addr_, - Eq(ExpectedAlpnForVersion(version)), version, _)) + Eq(ExpectedAlpnForVersion(version)), version, _, _)) .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_,
diff --git a/quiche/quic/masque/masque_dispatcher.cc b/quiche/quic/masque/masque_dispatcher.cc index 40ba112..788707d 100644 --- a/quiche/quic/masque/masque_dispatcher.cc +++ b/quiche/quic/masque/masque_dispatcher.cc
@@ -4,6 +4,9 @@ #include "quiche/quic/masque/masque_dispatcher.h" +#include "quiche/quic/core/connection_id_generator.h" +#include "quiche/quic/core/quic_types.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/masque/masque_server_session.h" namespace quic { @@ -29,14 +32,14 @@ std::unique_ptr<QuicSession> MasqueDispatcher::CreateQuicSession( QuicConnectionId connection_id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view /*alpn*/, - const ParsedQuicVersion& version, - const ParsedClientHello& /*parsed_chlo*/) { + const ParsedQuicVersion& version, const ParsedClientHello& /*parsed_chlo*/, + ConnectionIdGeneratorInterface& connection_id_generator) { // The MasqueServerSession takes ownership of |connection| below. QuicConnection* connection = new QuicConnection( connection_id, self_address, peer_address, helper(), alarm_factory(), writer(), /*owns_writer=*/false, Perspective::IS_SERVER, - ParsedQuicVersionVector{version}, connection_id_generator()); + ParsedQuicVersionVector{version}, connection_id_generator); auto session = std::make_unique<MasqueServerSession>( masque_mode_, config(), GetSupportedVersions(), connection, this,
diff --git a/quiche/quic/masque/masque_dispatcher.h b/quiche/quic/masque/masque_dispatcher.h index 8d5a07b..06750a6 100644 --- a/quiche/quic/masque/masque_dispatcher.h +++ b/quiche/quic/masque/masque_dispatcher.h
@@ -5,10 +5,13 @@ #ifndef QUICHE_QUIC_MASQUE_MASQUE_DISPATCHER_H_ #define QUICHE_QUIC_MASQUE_MASQUE_DISPATCHER_H_ -#include "absl/container/flat_hash_map.h" +#include <cstdint> + +#include "quiche/quic/core/connection_id_generator.h" #include "quiche/quic/core/io/quic_event_loop.h" +#include "quiche/quic/core/quic_types.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/masque/masque_server_backend.h" -#include "quiche/quic/masque/masque_server_session.h" #include "quiche/quic/masque/masque_utils.h" #include "quiche/quic/platform/api/quic_export.h" #include "quiche/quic/tools/quic_simple_dispatcher.h" @@ -39,7 +42,8 @@ QuicConnectionId connection_id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view alpn, const ParsedQuicVersion& version, - const quic::ParsedClientHello& parsed_chlo) override; + const quic::ParsedClientHello& parsed_chlo, + quic::ConnectionIdGeneratorInterface& connection_id_generator) override; private: MasqueMode masque_mode_;
diff --git a/quiche/quic/qbone/qbone_client_test.cc b/quiche/quic/qbone/qbone_client_test.cc index 6429491..c77078d 100644 --- a/quiche/quic/qbone/qbone_client_test.cc +++ b/quiche/quic/qbone/qbone_client_test.cc
@@ -15,6 +15,8 @@ #include "quiche/quic/core/quic_default_clock.h" #include "quiche/quic/core/quic_default_connection_helper.h" #include "quiche/quic/core/quic_dispatcher.h" +#include "quiche/quic/core/quic_types.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/platform/api/quic_flags.h" #include "quiche/quic/platform/api/quic_mutex.h" #include "quiche/quic/platform/api/quic_socket_address.h" @@ -107,12 +109,13 @@ QuicConnectionId id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view alpn, const ParsedQuicVersion& version, - const ParsedClientHello& /*parsed_chlo*/) override { + const ParsedClientHello& /*parsed_chlo*/, + ConnectionIdGeneratorInterface& connection_id_generator) override { QUICHE_CHECK_EQ(alpn, "qbone"); QuicConnection* connection = new QuicConnection( id, self_address, peer_address, helper(), alarm_factory(), writer(), /* owns_writer= */ false, Perspective::IS_SERVER, - ParsedQuicVersionVector{version}, connection_id_generator()); + ParsedQuicVersionVector{version}, connection_id_generator); // The connection owning wrapper owns the connection created. auto session = std::make_unique<ConnectionOwningQboneServerSession>( GetSupportedVersions(), connection, this, config(), crypto_config(),
diff --git a/quiche/quic/test_tools/quic_test_server.cc b/quiche/quic/test_tools/quic_test_server.cc index fc95413..1fb87c7 100644 --- a/quiche/quic/test_tools/quic_test_server.cc +++ b/quiche/quic/test_tools/quic_test_server.cc
@@ -8,8 +8,11 @@ #include "absl/memory/memory.h" #include "absl/strings/string_view.h" +#include "quiche/quic/core/connection_id_generator.h" #include "quiche/quic/core/io/quic_default_event_loop.h" #include "quiche/quic/core/quic_default_connection_helper.h" +#include "quiche/quic/core/quic_types.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/tools/quic_simple_crypto_server_stream_helper.h" #include "quiche/quic/tools/quic_simple_dispatcher.h" #include "quiche/quic/tools/quic_simple_server_session.h" @@ -88,13 +91,14 @@ QuicConnectionId id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view alpn, const ParsedQuicVersion& version, - const ParsedClientHello& /*parsed_chlo*/) override { + const ParsedClientHello& /*parsed_chlo*/, + ConnectionIdGeneratorInterface& connection_id_generator) override { QuicReaderMutexLock lock(&factory_lock_); // The QuicServerSessionBase takes ownership of |connection| below. QuicConnection* connection = new QuicConnection( id, self_address, peer_address, helper(), alarm_factory(), writer(), /* owns_writer= */ false, Perspective::IS_SERVER, - ParsedQuicVersionVector{version}, connection_id_generator()); + ParsedQuicVersionVector{version}, connection_id_generator); std::unique_ptr<QuicServerSessionBase> session; if (session_factory_ == nullptr && stream_factory_ == nullptr &&
diff --git a/quiche/quic/tools/quic_simple_dispatcher.cc b/quiche/quic/tools/quic_simple_dispatcher.cc index 50f0636..f712f5a 100644 --- a/quiche/quic/tools/quic_simple_dispatcher.cc +++ b/quiche/quic/tools/quic_simple_dispatcher.cc
@@ -5,6 +5,9 @@ #include "quiche/quic/tools/quic_simple_dispatcher.h" #include "absl/strings/string_view.h" +#include "quiche/quic/core/connection_id_generator.h" +#include "quiche/quic/core/quic_types.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/tools/quic_simple_server_session.h" namespace quic { @@ -47,14 +50,14 @@ std::unique_ptr<QuicSession> QuicSimpleDispatcher::CreateQuicSession( QuicConnectionId connection_id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view /*alpn*/, - const ParsedQuicVersion& version, - const ParsedClientHello& /*parsed_chlo*/) { + const ParsedQuicVersion& version, const ParsedClientHello& /*parsed_chlo*/, + ConnectionIdGeneratorInterface& connection_id_generator) { // The QuicServerSessionBase takes ownership of |connection| below. QuicConnection* connection = new QuicConnection( connection_id, self_address, peer_address, helper(), alarm_factory(), writer(), /* owns_writer= */ false, Perspective::IS_SERVER, - ParsedQuicVersionVector{version}, connection_id_generator()); + ParsedQuicVersionVector{version}, connection_id_generator); auto session = std::make_unique<QuicSimpleServerSession>( config(), GetSupportedVersions(), connection, this, session_helper(),
diff --git a/quiche/quic/tools/quic_simple_dispatcher.h b/quiche/quic/tools/quic_simple_dispatcher.h index 16f7fd0..884fdf5 100644 --- a/quiche/quic/tools/quic_simple_dispatcher.h +++ b/quiche/quic/tools/quic_simple_dispatcher.h
@@ -6,8 +6,11 @@ #define QUICHE_QUIC_TOOLS_QUIC_SIMPLE_DISPATCHER_H_ #include "absl/strings/string_view.h" +#include "quiche/quic/core/connection_id_generator.h" #include "quiche/quic/core/http/quic_server_session_base.h" #include "quiche/quic/core/quic_dispatcher.h" +#include "quiche/quic/core/quic_types.h" +#include "quiche/quic/core/quic_versions.h" #include "quiche/quic/tools/quic_simple_server_backend.h" namespace quic { @@ -34,8 +37,8 @@ std::unique_ptr<QuicSession> CreateQuicSession( QuicConnectionId connection_id, const QuicSocketAddress& self_address, const QuicSocketAddress& peer_address, absl::string_view alpn, - const ParsedQuicVersion& version, - const ParsedClientHello& parsed_chlo) override; + const ParsedQuicVersion& version, const ParsedClientHello& parsed_chlo, + ConnectionIdGeneratorInterface& connection_id_generator) override; QuicSimpleServerBackend* server_backend() { return quic_simple_server_backend_;