Deprecate --gfe2_restart_flag_quic_dispatcher_support_multiple_cid_per_connection_v2
PiperOrigin-RevId: 410393958
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc
index 3e18d65..e31408a 100644
--- a/quic/core/quic_connection.cc
+++ b/quic/core/quic_connection.cc
@@ -317,11 +317,6 @@
QUICHE_DCHECK(perspective_ == Perspective::IS_CLIENT ||
default_path_.self_address.IsInitialized());
- support_multiple_connection_ids_ =
- version().HasIetfQuicFrames() &&
- GetQuicRestartFlag(
- quic_dispatcher_support_multiple_cid_per_connection_v2);
-
QUIC_DLOG(INFO) << ENDPOINT << "Created connection with server connection ID "
<< server_connection_id
<< " and version: " << ParsedQuicVersionToString(version());
@@ -522,7 +517,7 @@
}
}
- if (support_multiple_connection_ids_ &&
+ if (version().HasIetfQuicFrames() &&
config.HasReceivedPreferredAddressConnectionIdAndToken()) {
QuicNewConnectionIdFrame frame;
std::tie(frame.connection_id, frame.stateless_reset_token) =
@@ -645,7 +640,7 @@
// and server in unit tests with random flag combinations.
// 2) Client side's rollout can be protected by the same connection option.
connection_migration_use_new_cid_ =
- support_multiple_connection_ids_ && validate_client_addresses_ &&
+ validate_client_addresses_ &&
GetQuicReloadableFlag(quic_drop_unsent_path_response) &&
GetQuicReloadableFlag(quic_connection_migration_use_new_cid_v2);
if (config.HasReceivedMaxPacketSize()) {
@@ -1989,7 +1984,6 @@
bool QuicConnection::OnNewConnectionIdFrameInner(
const QuicNewConnectionIdFrame& frame) {
- QUICHE_DCHECK(support_multiple_connection_ids_);
if (peer_issued_cid_manager_ == nullptr) {
CloseConnection(
IETF_QUIC_PROTOCOL_VIOLATION,
@@ -2014,6 +2008,7 @@
bool QuicConnection::OnNewConnectionIdFrame(
const QuicNewConnectionIdFrame& frame) {
+ QUICHE_DCHECK(version().HasIetfQuicFrames());
QUIC_BUG_IF(quic_bug_10511_13, !connected_)
<< "Processing NEW_CONNECTION_ID frame when "
"connection is closed. Last frame: "
@@ -2025,14 +2020,12 @@
if (debug_visitor_ != nullptr) {
debug_visitor_->OnNewConnectionIdFrame(frame);
}
- if (!support_multiple_connection_ids_) {
- return true;
- }
return OnNewConnectionIdFrameInner(frame);
}
bool QuicConnection::OnRetireConnectionIdFrame(
const QuicRetireConnectionIdFrame& frame) {
+ QUICHE_DCHECK(version().HasIetfQuicFrames());
QUIC_BUG_IF(quic_bug_10511_14, !connected_)
<< "Processing RETIRE_CONNECTION_ID frame when "
"connection is closed. Last frame: "
@@ -2048,9 +2041,6 @@
// Do not respond to RetireConnectionId frame.
return true;
}
- if (!support_multiple_connection_ids_) {
- return true;
- }
if (self_issued_cid_manager_ == nullptr) {
CloseConnection(
IETF_QUIC_PROTOCOL_VIOLATION,
@@ -2941,7 +2931,7 @@
void QuicConnection::ReplaceInitialServerConnectionId(
const QuicConnectionId& new_server_connection_id) {
QUICHE_DCHECK(perspective_ == Perspective::IS_CLIENT);
- if (support_multiple_connection_ids_) {
+ if (version().HasIetfQuicFrames()) {
if (new_server_connection_id.IsEmpty()) {
peer_issued_cid_manager_ = nullptr;
} else {
@@ -3215,8 +3205,9 @@
QuicVersionUsesCryptoFrames(transport_version()))
<< ENDPOINT
<< "Handshake in STREAM frames should not check ShouldGeneratePacket";
- if (support_multiple_connection_ids_ && peer_issued_cid_manager_ != nullptr &&
+ if (peer_issued_cid_manager_ != nullptr &&
packet_creator_.GetDestinationConnectionId().IsEmpty()) {
+ QUICHE_DCHECK(version().HasIetfQuicFrames());
QUIC_CODE_COUNT(quic_generate_packet_blocked_by_no_connection_id);
QUIC_BUG_IF(quic_bug_90265_1, perspective_ == Perspective::IS_CLIENT);
QUIC_DLOG(INFO) << ENDPOINT
@@ -6264,7 +6255,7 @@
default_path_.client_connection_id = client_connection_id;
client_connection_id_is_set_ = true;
- if (support_multiple_connection_ids_ && !client_connection_id.IsEmpty()) {
+ if (version().HasIetfQuicFrames() && !client_connection_id.IsEmpty()) {
if (perspective_ == Perspective::IS_SERVER) {
QUICHE_DCHECK(peer_issued_cid_manager_ == nullptr);
peer_issued_cid_manager_ =
@@ -6853,15 +6844,15 @@
std::vector<QuicConnectionId> QuicConnection::GetActiveServerConnectionIds()
const {
- if (!support_multiple_connection_ids_ ||
- self_issued_cid_manager_ == nullptr) {
+ if (self_issued_cid_manager_ == nullptr) {
return {default_path_.server_connection_id};
}
+ QUICHE_DCHECK(version().HasIetfQuicFrames());
return self_issued_cid_manager_->GetUnretiredConnectionIds();
}
void QuicConnection::CreateConnectionIdManager() {
- if (!support_multiple_connection_ids_) {
+ if (!version().HasIetfQuicFrames()) {
return;
}
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index 0709a78..03a1c56 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -1237,10 +1237,6 @@
bool validate_client_address() const { return validate_client_addresses_; }
- bool support_multiple_connection_ids() const {
- return support_multiple_connection_ids_;
- }
-
bool connection_migration_use_new_cid() const {
return connection_migration_use_new_cid_;
}
@@ -2278,8 +2274,6 @@
// If true, upon seeing a new client address, validate the client address.
bool validate_client_addresses_ = false;
- bool support_multiple_connection_ids_ = false;
-
// Indicates whether we should proactively validate peer address on a
// PATH_CHALLENGE received.
bool should_proactively_validate_peer_address_on_path_challenge_ = false;
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 8879a32..89fb70b 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -1465,7 +1465,7 @@
EXPECT_EQ(kPeerAddress, connection_.peer_address());
EXPECT_EQ(kPeerAddress, connection_.effective_peer_address());
if (perspective == Perspective::IS_CLIENT &&
- receive_new_server_connection_id) {
+ receive_new_server_connection_id && version().HasIetfQuicFrames()) {
QuicNewConnectionIdFrame frame;
frame.connection_id = TestConnectionId(1234);
ASSERT_NE(frame.connection_id, connection_.connection_id());
@@ -14695,7 +14695,6 @@
if (!version().HasIetfQuicFrames()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
set_perspective(Perspective::IS_SERVER);
ASSERT_TRUE(connection_.client_connection_id().IsEmpty());
@@ -14720,7 +14719,6 @@
if (!version().HasIetfQuicFrames()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
connection_.CreateConnectionIdManager();
ASSERT_FALSE(connection_.connection_id().IsEmpty());
@@ -14745,7 +14743,6 @@
if (!version().HasIetfQuicFrames()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
connection_.CreateConnectionIdManager();
QuicNewConnectionIdFrame frame;
@@ -14782,7 +14779,6 @@
if (!version().HasIetfQuicFrames()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
set_perspective(Perspective::IS_SERVER);
SetClientConnectionId(TestConnectionId(0));
@@ -14822,7 +14818,6 @@
!connection_.count_bytes_on_alternative_path_separately()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
PathProbeTestInit(Perspective::IS_SERVER);
SetClientConnectionId(TestConnectionId(0));
@@ -14881,7 +14876,6 @@
!connection_.connection_migration_use_new_cid()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
set_perspective(Perspective::IS_SERVER);
EXPECT_CALL(visitor_, BeforeConnectionCloseSent());
@@ -14902,7 +14896,6 @@
!connection_.connection_migration_use_new_cid()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
set_perspective(Perspective::IS_SERVER);
connection_.CreateConnectionIdManager();
@@ -14925,10 +14918,9 @@
TEST_P(QuicConnectionTest,
ServerRetireSelfIssuedConnectionIdWithoutSendingNewConnectionIdBefore) {
- if (!connection_.support_multiple_connection_ids()) {
+ if (!version().HasIetfQuicFrames()) {
return;
}
- QuicConnectionPeer::EnableMultipleConnectionIdSupport(&connection_);
set_perspective(Perspective::IS_SERVER);
connection_.CreateConnectionIdManager();
@@ -15040,8 +15032,7 @@
}
TEST_P(QuicConnectionTest, PatchMissingClientConnectionIdOntoAlternativePath) {
- if (!version().HasIetfQuicFrames() ||
- !connection_.support_multiple_connection_ids()) {
+ if (!version().HasIetfQuicFrames()) {
return;
}
set_perspective(Perspective::IS_SERVER);
@@ -15075,8 +15066,7 @@
}
TEST_P(QuicConnectionTest, PatchMissingClientConnectionIdOntoDefaultPath) {
- if (!version().HasIetfQuicFrames() ||
- !connection_.support_multiple_connection_ids()) {
+ if (!version().HasIetfQuicFrames()) {
return;
}
set_perspective(Perspective::IS_SERVER);
@@ -15117,8 +15107,7 @@
}
TEST_P(QuicConnectionTest, ShouldGeneratePacketBlockedByMissingConnectionId) {
- if (!version().HasIetfQuicFrames() ||
- !connection_.support_multiple_connection_ids()) {
+ if (!version().HasIetfQuicFrames()) {
return;
}
set_perspective(Perspective::IS_SERVER);
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index ef6db5d..a1e89b2 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -368,9 +368,7 @@
}
reference_counted_session_map_.clear();
closed_ref_counted_session_list_.clear();
- if (support_multiple_cid_per_connection_) {
- num_sessions_in_session_map_ = 0;
- }
+ num_sessions_in_session_map_ = 0;
}
void QuicDispatcher::InitializeWithWriter(QuicPacketWriter* writer) {
@@ -907,37 +905,16 @@
} else {
QUIC_CODE_COUNT(quic_v44_add_to_time_wait_list_with_handshake_failed);
}
- if (support_multiple_cid_per_connection_) {
- QUIC_RESTART_FLAG_COUNT_N(
- quic_dispatcher_support_multiple_cid_per_connection_v2, 1, 2);
- // This serializes a connection close termination packet and adds the
- // connection to the time wait list.
- StatelessConnectionTerminator terminator(
- server_connection_id, connection->version(), helper_.get(),
- time_wait_list_manager_.get());
- terminator.CloseConnection(
- QUIC_HANDSHAKE_FAILED,
- "Connection is closed by server before handshake confirmed",
- connection->version().HasIetfInvariantHeader(),
- connection->GetActiveServerConnectionIds());
- } else {
- action = QuicTimeWaitListManager::SEND_TERMINATION_PACKETS;
- // This serializes a connection close termination packet and adds the
- // connection to the time wait list.
- StatelesslyTerminateConnection(
- connection->connection_id(),
- connection->version().HasIetfInvariantHeader()
- ? IETF_QUIC_LONG_HEADER_PACKET
- : GOOGLE_QUIC_PACKET,
- /*version_flag=*/true,
- connection->version().HasLengthPrefixedConnectionIds(),
- connection->version(), QUIC_HANDSHAKE_FAILED,
- "Connection is closed by server before handshake confirmed",
- // Although it is our intention to send termination packets, the
- // |action| argument is not used by this call to
- // StatelesslyTerminateConnection().
- action);
- }
+ // This serializes a connection close termination packet and adds the
+ // connection to the time wait list.
+ StatelessConnectionTerminator terminator(
+ server_connection_id, connection->version(), helper_.get(),
+ time_wait_list_manager_.get());
+ terminator.CloseConnection(
+ QUIC_HANDSHAKE_FAILED,
+ "Connection is closed by server before handshake confirmed",
+ connection->version().HasIetfInvariantHeader(),
+ connection->GetActiveServerConnectionIds());
return;
}
QUIC_CODE_COUNT(quic_v44_add_to_time_wait_list_with_stateless_reset);
@@ -1087,17 +1064,11 @@
closed_ref_counted_session_list_.push_back(std::move(it->second));
}
CleanUpSession(it->first, connection, error, error_details, source);
- if (support_multiple_cid_per_connection_) {
- QUIC_RESTART_FLAG_COUNT_N(
- quic_dispatcher_support_multiple_cid_per_connection_v2, 1, 2);
- for (const QuicConnectionId& cid :
- connection->GetActiveServerConnectionIds()) {
- reference_counted_session_map_.erase(cid);
- }
- --num_sessions_in_session_map_;
- } else {
- reference_counted_session_map_.erase(it);
+ for (const QuicConnectionId& cid :
+ connection->GetActiveServerConnectionIds()) {
+ reference_counted_session_map_.erase(cid);
}
+ --num_sessions_in_session_map_;
}
void QuicDispatcher::OnWriteBlocked(
@@ -1123,7 +1094,6 @@
void QuicDispatcher::OnNewConnectionIdSent(
const QuicConnectionId& server_connection_id,
const QuicConnectionId& new_connection_id) {
- QUICHE_DCHECK(support_multiple_cid_per_connection_);
auto it = reference_counted_session_map_.find(server_connection_id);
if (it == reference_counted_session_map_.end()) {
QUIC_BUG(quic_bug_10287_7)
@@ -1141,7 +1111,6 @@
void QuicDispatcher::OnConnectionIdRetired(
const QuicConnectionId& server_connection_id) {
- QUICHE_DCHECK(support_multiple_cid_per_connection_);
reference_counted_session_map_.erase(server_connection_id);
}
@@ -1271,7 +1240,7 @@
<< "Tried to add a session to session_map with existing connection "
"id: "
<< server_connection_id;
- } else if (support_multiple_cid_per_connection_) {
+ } else {
++num_sessions_in_session_map_;
}
DeliverPacketsToSession(packets, insertion_result.first->second.get());
@@ -1380,7 +1349,7 @@
<< "Tried to add a session to session_map with existing "
"connection id: "
<< packet_info->destination_connection_id;
- } else if (support_multiple_cid_per_connection_) {
+ } else {
++num_sessions_in_session_map_;
}
session_ptr = insertion_result.first->second.get();
@@ -1492,10 +1461,7 @@
}
size_t QuicDispatcher::NumSessions() const {
- if (support_multiple_cid_per_connection_) {
- return num_sessions_in_session_map_;
- }
- return reference_counted_session_map_.size();
+ return num_sessions_in_session_map_;
}
} // namespace quic
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h
index 71e3914..eab326a 100644
--- a/quic/core/quic_dispatcher.h
+++ b/quic/core/quic_dispatcher.h
@@ -164,10 +164,6 @@
bool accept_new_connections() const { return accept_new_connections_; }
- bool support_multiple_cid_per_connection() const {
- return support_multiple_cid_per_connection_;
- }
-
protected:
// Creates a QUIC session based on the given information.
// |alpn| is the selected ALPN from |parsed_chlo.alpns|.
@@ -484,10 +480,6 @@
const bool use_recent_reset_addresses_ =
GetQuicRestartFlag(quic_use_recent_reset_addresses);
-
- const bool support_multiple_cid_per_connection_ =
- GetQuicRestartFlag(
- quic_dispatcher_support_multiple_cid_per_connection_v2);
};
} // namespace quic
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index 66cfcb3..d4af035 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -2186,8 +2186,6 @@
public:
QuicDispatcherSupportMultipleConnectionIdPerConnectionTest()
: QuicDispatcherTestBase(crypto_test_utils::ProofSourceForTesting()) {
- SetQuicRestartFlag(quic_dispatcher_support_multiple_cid_per_connection_v2,
- true);
dispatcher_ = std::make_unique<NiceMock<TestDispatcher>>(
&config_, &crypto_config_, &version_manager_,
mock_helper_.GetRandomGenerator());
diff --git a/quic/core/quic_flags_list.h b/quic/core/quic_flags_list.h
index 176f87c..475867d 100644
--- a/quic/core/quic_flags_list.h
+++ b/quic/core/quic_flags_list.h
@@ -87,8 +87,6 @@
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_add_stream_info_to_idle_close_detail, true)
// If true, pass the received PATH_RESPONSE payload to path validator to move forward the path validation.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_pass_path_response_to_validator, true)
-// If true, quic dispatcher supports one connection to use multiple connection IDs.
-QUIC_FLAG(FLAGS_quic_restart_flag_quic_dispatcher_support_multiple_cid_per_connection_v2, true)
// If true, quic server will send ENABLE_CONNECT_PROTOCOL setting and and endpoint will validate required request/response headers and extended CONNECT mechanism and update code counts of valid/invalid headers.
QUIC_FLAG(FLAGS_quic_reloadable_flag_quic_verify_request_headers_2, true)
// If true, record addresses that server has sent reset to recently, and do not send reset if the address lives in the set.
diff --git a/quic/test_tools/quic_connection_peer.cc b/quic/test_tools/quic_connection_peer.cc
index 57ce9d1..b511949 100644
--- a/quic/test_tools/quic_connection_peer.cc
+++ b/quic/test_tools/quic_connection_peer.cc
@@ -480,12 +480,6 @@
}
// static
-void QuicConnectionPeer::EnableMultipleConnectionIdSupport(
- QuicConnection* connection) {
- connection->support_multiple_connection_ids_ = true;
-}
-
-// static
void QuicConnectionPeer::ResetPeerIssuedConnectionIdManager(
QuicConnection* connection) {
connection->peer_issued_cid_manager_ = nullptr;
diff --git a/quic/test_tools/quic_connection_peer.h b/quic/test_tools/quic_connection_peer.h
index 887ac8a..aa30c24 100644
--- a/quic/test_tools/quic_connection_peer.h
+++ b/quic/test_tools/quic_connection_peer.h
@@ -197,8 +197,6 @@
static QuicByteCount BytesReceivedBeforeAddressValidation(
QuicConnection* connection);
- static void EnableMultipleConnectionIdSupport(QuicConnection* connection);
-
static void ResetPeerIssuedConnectionIdManager(QuicConnection* connection);
static QuicConnection::PathState* GetDefaultPath(QuicConnection* connection);