gfe-relnote: (n/a) Change the return type of QuicDispatcher::CreateQuicSession from raw to unique_ptr. No behavior change, not protected. PiperOrigin-RevId: 285249381 Change-Id: Ia6d129501364dc231f86f4bda2be36ffd848bb93
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc index ae82fed..4c9dab8 100644 --- a/quic/core/quic_dispatcher.cc +++ b/quic/core/quic_dispatcher.cc
@@ -823,7 +823,7 @@ QuicConnectionId original_connection_id = server_connection_id; server_connection_id = MaybeReplaceServerConnectionId(server_connection_id, packet_list.version); - QuicSession* session = + std::unique_ptr<QuicSession> session = CreateQuicSession(server_connection_id, packets.front().peer_address, packet_list.alpn, packet_list.version); if (original_connection_id != server_connection_id) { @@ -832,12 +832,12 @@ } QUIC_DLOG(INFO) << "Created new session for " << server_connection_id; - DCHECK(session_map_.find(server_connection_id) == session_map_.end()) - << "Tried to add session map existing entry " << server_connection_id; - - session_map_.insert( - std::make_pair(server_connection_id, QuicWrapUnique(session))); - DeliverPacketsToSession(packets, session); + auto insertion_result = session_map_.insert( + std::make_pair(server_connection_id, std::move(session))); + QUIC_BUG_IF(!insertion_result.second) + << "Tried to add a session to session_map with existing connection id: " + << server_connection_id; + DeliverPacketsToSession(packets, insertion_result.first->second.get()); } } @@ -931,7 +931,7 @@ packet_info->destination_connection_id = MaybeReplaceServerConnectionId( original_connection_id, packet_info->version); // Creates a new session and process all buffered packets for this connection. - QuicSession* session = + std::unique_ptr<QuicSession> session = CreateQuicSession(packet_info->destination_connection_id, packet_info->peer_address, alpn, packet_info->version); if (original_connection_id != packet_info->destination_connection_id) { @@ -941,23 +941,22 @@ QUIC_DLOG(INFO) << "Created new session for " << packet_info->destination_connection_id; - DCHECK(session_map_.find(packet_info->destination_connection_id) == - session_map_.end()) - << "Tried to add session map existing entry " + auto insertion_result = session_map_.insert(std::make_pair( + packet_info->destination_connection_id, std::move(session))); + QUIC_BUG_IF(!insertion_result.second) + << "Tried to add a session to session_map with existing connection id: " << packet_info->destination_connection_id; - - session_map_.insert(std::make_pair(packet_info->destination_connection_id, - QuicWrapUnique(session))); + QuicSession* session_ptr = insertion_result.first->second.get(); std::list<BufferedPacket> packets = buffered_packets_.DeliverPackets(packet_info->destination_connection_id) .buffered_packets; // Process CHLO at first. - session->ProcessUdpPacket(packet_info->self_address, - packet_info->peer_address, packet_info->packet); + session_ptr->ProcessUdpPacket(packet_info->self_address, + packet_info->peer_address, packet_info->packet); // Deliver queued-up packets in the same order as they arrived. // Do this even when flag is off because there might be still some packets // buffered in the store before flag is turned off. - DeliverPacketsToSession(packets, session); + DeliverPacketsToSession(packets, session_ptr); --new_sessions_allowed_per_event_loop_; }
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h index 7dbdea6..1d694e5 100644 --- a/quic/core/quic_dispatcher.h +++ b/quic/core/quic_dispatcher.h
@@ -138,10 +138,11 @@ virtual bool HasChlosBuffered() const; protected: - virtual QuicSession* CreateQuicSession(QuicConnectionId server_connection_id, - const QuicSocketAddress& peer_address, - QuicStringPiece alpn, - const ParsedQuicVersion& version) = 0; + virtual std::unique_ptr<QuicSession> CreateQuicSession( + QuicConnectionId server_connection_id, + const QuicSocketAddress& peer_address, + QuicStringPiece alpn, + const ParsedQuicVersion& version) = 0; // Tries to validate and dispatch packet based on available information. // Returns true if packet is dropped or successfully dispatched (e.g.,
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc index 85c9d7c..7ec844a 100644 --- a/quic/core/quic_dispatcher_test.cc +++ b/quic/core/quic_dispatcher_test.cc
@@ -37,6 +37,7 @@ #include "net/third_party/quiche/src/quic/tools/quic_simple_crypto_server_stream_helper.h" using testing::_; +using testing::ByMove; using testing::InSequence; using testing::Invoke; using testing::NiceMock; @@ -124,11 +125,12 @@ kQuicDefaultConnectionIdLength), random_(random) {} - MOCK_METHOD4(CreateQuicSession, - QuicServerSessionBase*(QuicConnectionId connection_id, - const QuicSocketAddress& peer_address, - QuicStringPiece alpn, - const quic::ParsedQuicVersion& version)); + MOCK_METHOD4( + CreateQuicSession, + std::unique_ptr<QuicSession>(QuicConnectionId connection_id, + const QuicSocketAddress& peer_address, + QuicStringPiece alpn, + const quic::ParsedQuicVersion& version)); MOCK_METHOD1(ShouldCreateOrBufferPacketForConnection, bool(const ReceivedPacketInfo& packet_info)); @@ -326,7 +328,7 @@ data_connection_map_[conn_id].pop_front(); } - QuicServerSessionBase* CreateSession( + std::unique_ptr<QuicSession> CreateSession( TestDispatcher* dispatcher, const QuicConfig& config, QuicConnectionId connection_id, @@ -335,18 +337,19 @@ MockAlarmFactory* alarm_factory, const QuicCryptoServerConfig* crypto_config, QuicCompressedCertsCache* compressed_certs_cache, - TestQuicSpdyServerSession** session) { + TestQuicSpdyServerSession** session_ptr) { MockServerConnection* connection = new MockServerConnection( connection_id, helper, alarm_factory, dispatcher); connection->SetQuicPacketWriter(dispatcher->writer(), /*owns_writer=*/false); - *session = new TestQuicSpdyServerSession(config, connection, crypto_config, - compressed_certs_cache); - connection->set_visitor(*session); + auto session = std::make_unique<TestQuicSpdyServerSession>( + config, connection, crypto_config, compressed_certs_cache); + *session_ptr = session.get(); + connection->set_visitor(session.get()); ON_CALL(*connection, CloseConnection(_, _, _)) .WillByDefault(WithoutArgs(Invoke( connection, &MockServerConnection::UnregisterOnConnectionClosed))); - return *session; + return session; } void CreateTimeWaitListManager() { @@ -372,10 +375,10 @@ QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1); EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>( @@ -424,10 +427,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, QuicStringPiece(""), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -447,10 +450,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -464,10 +467,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(2), client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session2_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session2_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session2_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -494,10 +497,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); // Verify both packets 1 and 2 are processed by connection 1. EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -608,10 +611,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -637,10 +640,10 @@ QuicConnectionId connection_id = TestConnectionId(1); EXPECT_CALL(*dispatcher_, CreateQuicSession(connection_id, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -730,10 +733,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(fixed_connection_id, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, fixed_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>( @@ -768,10 +771,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(fixed_connection_id, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, fixed_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>( @@ -800,10 +803,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -817,10 +820,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(fixed_connection_id, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, fixed_connection_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session2_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session2_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session2_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>( @@ -882,10 +885,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(1), client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -1363,10 +1366,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(1), client_address, &helper_, &alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -1379,10 +1382,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(_, client_address, QuicStringPiece("hq"), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(2), client_address, &helper_, &alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session2_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session2_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session2_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>(Invoke([this](const QuicEncryptedPacket& packet) { @@ -1685,10 +1688,10 @@ // buffered should be delivered to the session. EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); // Only |kDefaultMaxUndecryptablePackets| packets were buffered, and they // should be delivered in arrival order. @@ -1738,10 +1741,10 @@ } EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); // First |kNumConnections| - 1 connections should have buffered // a packet in store. The rest should have been dropped. size_t num_packet_to_process = i <= kMaxConnectionsWithoutCHLO ? 2u : 1u; @@ -1765,10 +1768,10 @@ ReceivedPacketInfoConnectionIdEquals(conn_id))); EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, client_address, _)); ProcessPacket(client_address, conn_id, true, SerializeFullCHLO()); @@ -1789,10 +1792,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, client_address, QuicStringPiece(), _)) .Times(1) // Only triggered by 1st CHLO. - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, conn_id, client_address, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .Times(3) // Triggered by 1 data packet and 2 CHLOs. @@ -1851,11 +1854,11 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, QuicDispatcherPeer::GetCache(dispatcher_.get()), - &session1_))); + &session1_)))); EXPECT_CALL( *reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -1885,10 +1888,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillOnce(WithArg<2>( @@ -1919,11 +1922,11 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, QuicDispatcherPeer::GetCache(dispatcher_.get()), - &session1_))); + &session1_)))); EXPECT_CALL( *reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -1945,10 +1948,10 @@ // Reset counter and process buffered CHLO. EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection, client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, last_connection, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); // Only one packet(CHLO) should be process. EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -1969,11 +1972,11 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, QuicDispatcherPeer::GetCache(dispatcher_.get()), - &session1_))); + &session1_)))); EXPECT_CALL( *reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -1996,10 +1999,10 @@ // Reset counter and process buffered CHLO. EXPECT_CALL(*dispatcher_, CreateQuicSession(last_connection_id, client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, last_connection_id, client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); // Only CHLO and following |kDefaultMaxUndecryptablePackets| data packets // should be process. EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), @@ -2032,11 +2035,11 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), _)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, QuicDispatcherPeer::GetCache(dispatcher_.get()), - &session1_))); + &session1_)))); EXPECT_CALL( *reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -2074,11 +2077,11 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), version)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, QuicDispatcherPeer::GetCache(dispatcher_.get()), - &session1_))); + &session1_)))); EXPECT_CALL( *reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) @@ -2100,10 +2103,10 @@ EXPECT_CALL(*dispatcher_, CreateQuicSession(TestConnectionId(conn_id), client_addr_, QuicStringPiece(), version)) - .WillOnce(testing::Return(CreateSession( + .WillOnce(Return(ByMove(CreateSession( dispatcher_.get(), config_, TestConnectionId(conn_id), client_addr_, &mock_helper_, &mock_alarm_factory_, &crypto_config_, - QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_))); + QuicDispatcherPeer::GetCache(dispatcher_.get()), &session1_)))); EXPECT_CALL(*reinterpret_cast<MockQuicConnection*>(session1_->connection()), ProcessUdpPacket(_, _, _)) .WillRepeatedly(WithArg<2>(
diff --git a/quic/qbone/qbone_client_test.cc b/quic/qbone/qbone_client_test.cc index e24c3c2..d1a2872 100644 --- a/quic/qbone/qbone_client_test.cc +++ b/quic/qbone/qbone_client_test.cc
@@ -106,7 +106,7 @@ kQuicDefaultConnectionIdLength), writer_(writer) {} - QuicSession* CreateQuicSession( + std::unique_ptr<QuicSession> CreateQuicSession( QuicConnectionId id, const QuicSocketAddress& client, quiche::QuicheStringPiece alpn, @@ -117,7 +117,7 @@ /* owns_writer= */ false, Perspective::IS_SERVER, ParsedQuicVersionVector{version}); // The connection owning wrapper owns the connection created. - QboneServerSession* session = new ConnectionOwningQboneServerSession( + auto session = std::make_unique<ConnectionOwningQboneServerSession>( GetSupportedVersions(), connection, this, config(), crypto_config(), compressed_certs_cache(), writer_); session->Initialize();
diff --git a/quic/quartc/quartc_dispatcher.cc b/quic/quartc/quartc_dispatcher.cc index 57de849..8f0f1c1 100644 --- a/quic/quartc/quartc_dispatcher.cc +++ b/quic/quartc/quartc_dispatcher.cc
@@ -50,7 +50,7 @@ packet_writer_->SetPacketTransportDelegate(nullptr); } -QuartcSession* QuartcDispatcher::CreateQuicSession( +std::unique_ptr<QuicSession> QuartcDispatcher::CreateQuicSession( QuicConnectionId connection_id, const QuicSocketAddress& client_address, quiche::QuicheStringPiece /*alpn*/, @@ -60,11 +60,11 @@ std::unique_ptr<QuicConnection> connection = CreateQuicConnection( connection_id, client_address, helper(), alarm_factory(), writer(), Perspective::IS_SERVER, ParsedQuicVersionVector{version}); - QuartcSession* session = new QuartcServerSession( + auto session = std::make_unique<QuartcServerSession>( std::move(connection), /*visitor=*/this, config(), GetSupportedVersions(), helper()->GetClock(), crypto_config(), compressed_certs_cache(), session_helper()); - delegate_->OnSessionCreated(session); + delegate_->OnSessionCreated(session.get()); return session; }
diff --git a/quic/quartc/quartc_dispatcher.h b/quic/quartc/quartc_dispatcher.h index b294330..7ac3dae 100644 --- a/quic/quartc/quartc_dispatcher.h +++ b/quic/quartc/quartc_dispatcher.h
@@ -40,10 +40,11 @@ Delegate* delegate); ~QuartcDispatcher() override; - QuartcSession* CreateQuicSession(QuicConnectionId server_connection_id, - const QuicSocketAddress& client_address, - quiche::QuicheStringPiece alpn, - const ParsedQuicVersion& version) override; + std::unique_ptr<QuicSession> CreateQuicSession( + QuicConnectionId server_connection_id, + const QuicSocketAddress& client_address, + quiche::QuicheStringPiece alpn, + const ParsedQuicVersion& version) override; // TODO(b/124399417): Override GenerateNewServerConnectionId and request a // zero-length connection id when the QUIC server perspective supports it.
diff --git a/quic/test_tools/quic_test_server.cc b/quic/test_tools/quic_test_server.cc index 3e255b4..15bcae0 100644 --- a/quic/test_tools/quic_test_server.cc +++ b/quic/test_tools/quic_test_server.cc
@@ -93,7 +93,7 @@ stream_factory_(nullptr), crypto_stream_factory_(nullptr) {} - QuicServerSessionBase* CreateQuicSession( + std::unique_ptr<QuicSession> CreateQuicSession( QuicConnectionId id, const QuicSocketAddress& client, quiche::QuicheStringPiece alpn, @@ -108,9 +108,9 @@ /* owns_writer= */ false, Perspective::IS_SERVER, ParsedQuicVersionVector{version}); - QuicServerSessionBase* session = nullptr; + std::unique_ptr<QuicServerSessionBase> session; if (stream_factory_ != nullptr || crypto_stream_factory_ != nullptr) { - session = new CustomStreamSession( + session = std::make_unique<CustomStreamSession>( config(), GetSupportedVersions(), connection, this, session_helper(), crypto_config(), compressed_certs_cache(), stream_factory_, crypto_stream_factory_, server_backend());
diff --git a/quic/test_tools/quic_test_server.h b/quic/test_tools/quic_test_server.h index f9b677a..bbde27b 100644 --- a/quic/test_tools/quic_test_server.h +++ b/quic/test_tools/quic_test_server.h
@@ -27,7 +27,7 @@ virtual ~SessionFactory() {} // Returns a new session owned by the caller. - virtual QuicServerSessionBase* CreateSession( + virtual std::unique_ptr<QuicServerSessionBase> CreateSession( const QuicConfig& config, QuicConnection* connection, QuicSession::Visitor* visitor,
diff --git a/quic/tools/quic_simple_dispatcher.cc b/quic/tools/quic_simple_dispatcher.cc index f5f5a6c..3e5d08d 100644 --- a/quic/tools/quic_simple_dispatcher.cc +++ b/quic/tools/quic_simple_dispatcher.cc
@@ -48,7 +48,7 @@ } } -QuicServerSessionBase* QuicSimpleDispatcher::CreateQuicSession( +std::unique_ptr<QuicSession> QuicSimpleDispatcher::CreateQuicSession( QuicConnectionId connection_id, const QuicSocketAddress& client_address, quiche::QuicheStringPiece /*alpn*/, @@ -59,7 +59,7 @@ /* owns_writer= */ false, Perspective::IS_SERVER, ParsedQuicVersionVector{version}); - QuicServerSessionBase* session = new QuicSimpleServerSession( + auto session = std::make_unique<QuicSimpleServerSession>( config(), GetSupportedVersions(), connection, this, session_helper(), crypto_config(), compressed_certs_cache(), quic_simple_server_backend_); session->Initialize();
diff --git a/quic/tools/quic_simple_dispatcher.h b/quic/tools/quic_simple_dispatcher.h index 4d04400..e64614a 100644 --- a/quic/tools/quic_simple_dispatcher.h +++ b/quic/tools/quic_simple_dispatcher.h
@@ -31,7 +31,7 @@ void OnRstStreamReceived(const QuicRstStreamFrame& frame) override; protected: - QuicServerSessionBase* CreateQuicSession( + std::unique_ptr<QuicSession> CreateQuicSession( QuicConnectionId connection_id, const QuicSocketAddress& client_address, quiche::QuicheStringPiece alpn,
diff --git a/quic/tools/quic_transport_simple_server_dispatcher.cc b/quic/tools/quic_transport_simple_server_dispatcher.cc index 59c14d2..b6daed3 100644 --- a/quic/tools/quic_transport_simple_server_dispatcher.cc +++ b/quic/tools/quic_transport_simple_server_dispatcher.cc
@@ -33,7 +33,8 @@ expected_server_connection_id_length), accepted_origins_(accepted_origins) {} -QuicSession* QuicTransportSimpleServerDispatcher::CreateQuicSession( +std::unique_ptr<QuicSession> +QuicTransportSimpleServerDispatcher::CreateQuicSession( QuicConnectionId server_connection_id, const QuicSocketAddress& peer_address, quiche::QuicheStringPiece /*alpn*/, @@ -42,11 +43,10 @@ server_connection_id, peer_address, helper(), alarm_factory(), writer(), /*owns_writer=*/false, Perspective::IS_SERVER, ParsedQuicVersionVector{version}); - QuicTransportSimpleServerSession* session = - new QuicTransportSimpleServerSession( - connection.release(), /*owns_connection=*/true, this, config(), - GetSupportedVersions(), crypto_config(), compressed_certs_cache(), - accepted_origins_); + auto session = std::make_unique<QuicTransportSimpleServerSession>( + connection.release(), /*owns_connection=*/true, this, config(), + GetSupportedVersions(), crypto_config(), compressed_certs_cache(), + accepted_origins_); session->Initialize(); return session; }
diff --git a/quic/tools/quic_transport_simple_server_dispatcher.h b/quic/tools/quic_transport_simple_server_dispatcher.h index 4c134ad..c8d5ad7 100644 --- a/quic/tools/quic_transport_simple_server_dispatcher.h +++ b/quic/tools/quic_transport_simple_server_dispatcher.h
@@ -27,10 +27,11 @@ std::vector<url::Origin> accepted_origins); protected: - QuicSession* CreateQuicSession(QuicConnectionId server_connection_id, - const QuicSocketAddress& peer_address, - quiche::QuicheStringPiece alpn, - const ParsedQuicVersion& version) override; + std::unique_ptr<QuicSession> CreateQuicSession( + QuicConnectionId server_connection_id, + const QuicSocketAddress& peer_address, + quiche::QuicheStringPiece alpn, + const ParsedQuicVersion& version) override; std::vector<url::Origin> accepted_origins_; };