Deprecate quic_abstract_connection_id_generator.
Deletes a lot of code!
PiperOrigin-RevId: 481146465
diff --git a/quiche/quic/core/quic_dispatcher.cc b/quiche/quic/core/quic_dispatcher.cc
index e82ddce..da0af71 100644
--- a/quiche/quic/core/quic_dispatcher.cc
+++ b/quiche/quic/core/quic_dispatcher.cc
@@ -359,68 +359,6 @@
ProcessHeader(&packet_info);
}
-absl::optional<QuicConnectionId> QuicDispatcher::MaybeReplaceServerConnectionId(
- const QuicConnectionId& server_connection_id,
- const ParsedQuicVersion& version) {
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- // If the Dispatcher doesn't map the original connection ID, then using a
- // connection ID generator that isn't deterministic may break the handshake
- // and will certainly drop all 0-RTT packets.
- QUIC_RESTART_FLAG_COUNT(quic_abstract_connection_id_generator);
- return connection_id_generator_.MaybeReplaceConnectionId(
- server_connection_id, version);
- }
- const uint8_t server_connection_id_length = server_connection_id.length();
- if (server_connection_id_length == expected_server_connection_id_length_) {
- return absl::optional<QuicConnectionId>();
- }
- QUICHE_DCHECK(version.AllowsVariableLengthConnectionIds());
- QuicConnectionId new_connection_id;
- if (server_connection_id_length < expected_server_connection_id_length_) {
- new_connection_id = ReplaceShortServerConnectionId(
- version, server_connection_id, expected_server_connection_id_length_);
- // Verify that ReplaceShortServerConnectionId is deterministic.
- QUICHE_DCHECK_EQ(
- new_connection_id,
- ReplaceShortServerConnectionId(version, server_connection_id,
- expected_server_connection_id_length_));
- } else {
- new_connection_id = ReplaceLongServerConnectionId(
- version, server_connection_id, expected_server_connection_id_length_);
- // Verify that ReplaceLongServerConnectionId is deterministic.
- QUICHE_DCHECK_EQ(
- new_connection_id,
- ReplaceLongServerConnectionId(version, server_connection_id,
- expected_server_connection_id_length_));
- }
- QUICHE_DCHECK_EQ(expected_server_connection_id_length_,
- new_connection_id.length());
-
- QUIC_DLOG(INFO) << "Replacing incoming connection ID " << server_connection_id
- << " with " << new_connection_id;
- return new_connection_id;
-}
-
-QuicConnectionId QuicDispatcher::ReplaceShortServerConnectionId(
- const ParsedQuicVersion& /*version*/,
- const QuicConnectionId& server_connection_id,
- uint8_t expected_server_connection_id_length) const {
- QUICHE_DCHECK_LT(server_connection_id.length(),
- expected_server_connection_id_length);
- return QuicUtils::CreateReplacementConnectionId(
- server_connection_id, expected_server_connection_id_length);
-}
-
-QuicConnectionId QuicDispatcher::ReplaceLongServerConnectionId(
- const ParsedQuicVersion& /*version*/,
- const QuicConnectionId& server_connection_id,
- uint8_t expected_server_connection_id_length) const {
- QUICHE_DCHECK_GT(server_connection_id.length(),
- expected_server_connection_id_length);
- return QuicUtils::CreateReplacementConnectionId(
- server_connection_id, expected_server_connection_id_length);
-}
-
namespace {
constexpr bool IsSourceUdpPortBlocked(uint16_t port) {
// These UDP source ports have been observed in large scale denial of service
@@ -1275,7 +1213,8 @@
const QuicSocketAddress self_address,
const QuicSocketAddress peer_address) {
absl::optional<QuicConnectionId> server_connection_id =
- MaybeReplaceServerConnectionId(original_connection_id, version);
+ connection_id_generator_.MaybeReplaceConnectionId(original_connection_id,
+ version);
const bool replaced_connection_id = server_connection_id.has_value();
if (!replaced_connection_id) {
server_connection_id = original_connection_id;
diff --git a/quiche/quic/core/quic_dispatcher.h b/quiche/quic/core/quic_dispatcher.h
index 9cfc3b0..a8e6e72 100644
--- a/quiche/quic/core/quic_dispatcher.h
+++ b/quiche/quic/core/quic_dispatcher.h
@@ -181,31 +181,6 @@
// otherwise, returns false and the packet needs further processing.
virtual bool MaybeDispatchPacket(const ReceivedPacketInfo& packet_info);
- // Generate a connection ID with a length that is expected by the dispatcher.
- // Called only when |server_connection_id| is shorter than
- // |expected_connection_id_length|.
- // Note that this MUST produce a deterministic result (calling this method
- // with two connection IDs that are equal must produce the same result).
- // Note that this is not used in general operation because our default
- // |expected_server_connection_id_length| is 8, and the IETF specification
- // requires clients to use an initial length of at least 8. However, we
- // allow disabling that requirement via
- // |allow_short_initial_server_connection_ids_|.
- virtual QuicConnectionId ReplaceShortServerConnectionId(
- const ParsedQuicVersion& version,
- const QuicConnectionId& server_connection_id,
- uint8_t expected_server_connection_id_length) const;
-
- // Generate a connection ID with a length that is expected by the dispatcher.
- // Called only when |server_connection_id| is longer than
- // |expected_connection_id_length|.
- // Note that this MUST produce a deterministic result (calling this method
- // with two connection IDs that are equal must produce the same result).
- virtual QuicConnectionId ReplaceLongServerConnectionId(
- const ParsedQuicVersion& version,
- const QuicConnectionId& server_connection_id,
- uint8_t expected_server_connection_id_length) const;
-
// Values to be returned by ValidityChecks() to indicate what should be done
// with a packet. Fates with greater values are considered to be higher
// priority. ValidityChecks should return fate based on the priority order
@@ -342,11 +317,6 @@
// element of the vector is returned.
std::string SelectAlpn(const std::vector<std::string>& alpns);
- // Check if the client-generated server connection ID needs to be replaced.
- absl::optional<QuicConnectionId> MaybeReplaceServerConnectionId(
- const QuicConnectionId& server_connection_id,
- const ParsedQuicVersion& version);
-
// Sends public/stateless reset packets with no version and unknown
// connection ID according to the packet's size.
virtual void MaybeResetPacketsWithNoVersion(
diff --git a/quiche/quic/core/quic_dispatcher_test.cc b/quiche/quic/core/quic_dispatcher_test.cc
index ed5ea0c..ffa0b22 100644
--- a/quiche/quic/core/quic_dispatcher_test.cc
+++ b/quiche/quic/core/quic_dispatcher_test.cc
@@ -63,6 +63,9 @@
namespace test {
namespace {
+const QuicConnectionId kReturnConnectionId{
+ {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}};
+
class TestQuicSpdyServerSession : public QuicServerSessionBase {
public:
TestQuicSpdyServerSession(const QuicConfig& config,
@@ -432,8 +435,7 @@
const QuicConnectionId& server_connection_id,
const QuicConnectionId& client_connection_id,
std::unique_ptr<QuicCryptoClientConfig> client_crypto_config) {
- if (expect_generator_is_called_ &&
- GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
+ if (expect_generator_is_called_) {
// Can't replace the connection ID in early gQUIC versions!
ASSERT_TRUE(version.AllowsVariableLengthConnectionIds() ||
generated_connection_id_ == absl::nullopt);
@@ -533,8 +535,6 @@
bool expect_generator_is_called_ = true;
absl::optional<QuicConnectionId> generated_connection_id_;
// Constant to set generated_connection_id to when needed.
- QuicConnectionId return_connection_id_{
- {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}};
MockConnectionIdGenerator connection_id_generator_;
std::unique_ptr<NiceMock<TestDispatcher>> dispatcher_;
MockTimeWaitListManager* time_wait_list_manager_;
@@ -594,26 +594,18 @@
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
QuicConnectionId original_connection_id, new_connection_id;
if (long_connection_id) {
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- original_connection_id = TestConnectionIdNineBytesLong(1);
- new_connection_id = return_connection_id_;
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(original_connection_id, version_))
- .WillOnce(Return(new_connection_id));
- } else {
- original_connection_id = QuicConnectionId(
- {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09});
- new_connection_id =
- QuicConnectionId({0x6c, 0x6b, 0x4b, 0xad, 0x8d, 0x00, 0x24, 0xd8});
- }
+ original_connection_id = TestConnectionIdNineBytesLong(1);
+ new_connection_id = kReturnConnectionId;
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(original_connection_id, version_))
+ .WillOnce(Return(new_connection_id));
+
} else {
original_connection_id = TestConnectionId();
new_connection_id = original_connection_id;
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(original_connection_id, version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(original_connection_id, version_))
+ .WillOnce(Return(absl::nullopt));
}
QuicConfig client_config = DefaultQuicConfig();
// Add a 2000-byte custom parameter to increase the length of the CHLO.
@@ -1037,10 +1029,7 @@
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
QuicConnectionId bad_connection_id = TestConnectionIdNineBytesLong(2);
- generated_connection_id_ =
- (GetQuicRestartFlag(quic_abstract_connection_id_generator))
- ? return_connection_id_
- : QuicUtils::CreateReplacementConnectionId(bad_connection_id);
+ generated_connection_id_ = kReturnConnectionId;
EXPECT_CALL(*dispatcher_,
CreateQuicSession(*generated_connection_id_, _, client_address,
@@ -1068,10 +1057,7 @@
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
QuicConnectionId bad_connection_id = EmptyQuicConnectionId();
- generated_connection_id_ =
- GetQuicRestartFlag(quic_abstract_connection_id_generator)
- ? return_connection_id_
- : QuicUtils::CreateReplacementConnectionId(bad_connection_id);
+ generated_connection_id_ = kReturnConnectionId;
// Disable validation of invalid short connection IDs.
dispatcher_->SetAllowShortInitialServerConnectionIds(true);
@@ -1118,10 +1104,7 @@
})));
ProcessFirstFlight(client_address, TestConnectionId(1));
- generated_connection_id_ =
- GetQuicRestartFlag(quic_abstract_connection_id_generator)
- ? return_connection_id_
- : QuicUtils::CreateReplacementConnectionId(bad_connection_id);
+ generated_connection_id_ = kReturnConnectionId;
EXPECT_CALL(*dispatcher_,
CreateQuicSession(*generated_connection_id_, _, client_address,
Eq(ExpectedAlpn()), _, _))
@@ -2258,12 +2241,12 @@
dispatcher_->OnConnectionClosed(TestConnectionId(2),
QuicErrorCode::QUIC_NO_ERROR, "detail",
quic::ConnectionCloseSource::FROM_SELF);
- // QUICHE_BUG fires when connection1 tries to remove TestConnectionId(2)
- // again from the session_map.
- EXPECT_QUICHE_BUG(dispatcher_->OnConnectionClosed(
- TestConnectionId(1), QuicErrorCode::QUIC_NO_ERROR,
- "detail", quic::ConnectionCloseSource::FROM_SELF),
- "Missing session for cid");
+ // QUICHE_BUG fires when connection1 tries to remove TestConnectionId(2)
+ // again from the session_map.
+ EXPECT_QUICHE_BUG(dispatcher_->OnConnectionClosed(
+ TestConnectionId(1), QuicErrorCode::QUIC_NO_ERROR,
+ "detail", quic::ConnectionCloseSource::FROM_SELF),
+ "Missing session for cid");
}
TEST_P(QuicDispatcherSupportMultipleConnectionIdPerConnectionTest,
@@ -2452,11 +2435,9 @@
// When CHLO arrives, a new session should be created, and all packets
// buffered should be delivered to the session.
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(conn_id, version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(conn_id, version_))
+ .WillOnce(Return(absl::nullopt));
EXPECT_CALL(*dispatcher_,
CreateQuicSession(conn_id, _, client_addr_, Eq(ExpectedAlpn()), _,
Eq(ParsedClientHelloForTest())))
@@ -2490,11 +2471,9 @@
data_connection_map_[conn_id].pop_back();
// When CHLO arrives, a new session should be created, and all packets
// buffered should be delivered to the session.
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(conn_id, version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(conn_id, version_))
+ .WillOnce(Return(absl::nullopt));
EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_addr_,
Eq(ExpectedAlpn()), _, _))
.WillOnce(Return(ByMove(CreateSession(
@@ -2540,11 +2519,9 @@
for (size_t i = 1; i <= kNumConnections; ++i) {
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 20000 + i);
QuicConnectionId conn_id = TestConnectionId(i);
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(conn_id, version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(conn_id, version_))
+ .WillOnce(Return(absl::nullopt));
EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_address,
Eq(ExpectedAlpn()), _, _))
.WillOnce(Return(ByMove(CreateSession(
@@ -2591,11 +2568,9 @@
// When CHLO arrives, a new session should be created, and all packets
// buffered should be delivered to the session.
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(conn_id, version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(conn_id, version_))
+ .WillOnce(Return(absl::nullopt));
EXPECT_CALL(*dispatcher_, CreateQuicSession(conn_id, _, client_addr_,
Eq(ExpectedAlpn()), _, _))
.Times(1) // Only triggered by 1st CHLO.
@@ -2661,12 +2636,9 @@
kMaxNumSessionsToCreate + kDefaultMaxConnectionsInStore + 1;
for (uint64_t conn_id = 1; conn_id <= kNumCHLOs; ++conn_id) {
if (conn_id <= kMaxNumSessionsToCreate) {
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(
- connection_id_generator_,
- MaybeReplaceConnectionId(TestConnectionId(conn_id), version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(TestConnectionId(conn_id), version_))
+ .WillOnce(Return(absl::nullopt));
EXPECT_CALL(*dispatcher_,
CreateQuicSession(TestConnectionId(conn_id), _, client_addr_,
Eq(ExpectedAlpn()), _,
@@ -2704,11 +2676,9 @@
for (uint64_t conn_id = kMaxNumSessionsToCreate + 1;
conn_id <= kMaxNumSessionsToCreate + kDefaultMaxConnectionsInStore;
++conn_id) {
- if (GetQuicRestartFlag(quic_abstract_connection_id_generator)) {
- EXPECT_CALL(connection_id_generator_,
- MaybeReplaceConnectionId(TestConnectionId(conn_id), version_))
- .WillOnce(Return(absl::nullopt));
- }
+ EXPECT_CALL(connection_id_generator_,
+ MaybeReplaceConnectionId(TestConnectionId(conn_id), version_))
+ .WillOnce(Return(absl::nullopt));
EXPECT_CALL(*dispatcher_,
CreateQuicSession(TestConnectionId(conn_id), _, client_addr_,
Eq(ExpectedAlpn()), _,
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 20f5594..6078d31 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -85,8 +85,6 @@
QUIC_FLAG(quic_reloadable_flag_quic_conservative_cwnd_and_pacing_gains, false)
// QuicConnection uses a library to generate connection IDs
QUIC_FLAG(quic_reloadable_flag_quic_connection_uses_abstract_connection_id_generator, true)
-// QuicDispatcher uses a library to generate connection IDs
-QUIC_FLAG(quic_restart_flag_quic_abstract_connection_id_generator, true)
// When true, defaults to BBR congestion control instead of Cubic.
QUIC_FLAG(quic_reloadable_flag_quic_default_to_bbr, false)
// When true, support draft-ietf-quic-v2-01