Deprecate quic_use_length_prefix_from_packet_info
This CL also removes the client-side workaround for b/139330014 since this flag deprecation ensures that all our servers now have the fix.
gfe-relnote: deprecate gfe2_reloadable_flag_quic_use_length_prefix_from_packet_info
PiperOrigin-RevId: 273647689
Change-Id: Ib36b0fb8c2af6d6dd18173dbddb61998ad371692
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc
index eec468a..acc5cb3 100644
--- a/quic/core/quic_dispatcher.cc
+++ b/quic/core/quic_dispatcher.cc
@@ -444,22 +444,12 @@
// packet and stop processing the current packet.
QuicConnectionId client_connection_id =
packet_info.source_connection_id;
- bool use_length_prefix = packet_info.use_length_prefix;
- if (!GetQuicReloadableFlag(quic_use_length_prefix_from_packet_info)) {
- use_length_prefix = packet_info.form != GOOGLE_QUIC_PACKET &&
- !QuicVersionLabelUses4BitConnectionIdLength(
- packet_info.version_label);
- } else {
- QUIC_RELOADABLE_FLAG_COUNT(quic_use_length_prefix_from_packet_info);
- // TODO(dschinazi) remove the client-side workaround in
- // QuicFramer::ParseServerVersionNegotiationProbeResponse
- // when quic_use_length_prefix_from_packet_info is deprecated.
- }
time_wait_list_manager()->SendVersionNegotiationPacket(
server_connection_id, client_connection_id,
- packet_info.form != GOOGLE_QUIC_PACKET, use_length_prefix,
- GetSupportedVersions(), packet_info.self_address,
- packet_info.peer_address, GetPerPacketContext());
+ packet_info.form != GOOGLE_QUIC_PACKET,
+ packet_info.use_length_prefix, GetSupportedVersions(),
+ packet_info.self_address, packet_info.peer_address,
+ GetPerPacketContext());
}
return true;
}
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index 48a1aa6..280d110 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -1014,7 +1014,6 @@
TEST_F(QuicDispatcherTest, VersionNegotiationProbeOld) {
SetQuicFlag(FLAGS_quic_prober_uses_length_prefixed_connection_ids, false);
- SetQuicReloadableFlag(quic_use_length_prefix_from_packet_info, true);
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
CreateTimeWaitListManager();
char packet[1200];
@@ -1044,7 +1043,6 @@
TEST_F(QuicDispatcherTest, VersionNegotiationProbe) {
SetQuicFlag(FLAGS_quic_prober_uses_length_prefixed_connection_ids, true);
- SetQuicReloadableFlag(quic_use_length_prefix_from_packet_info, true);
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
CreateTimeWaitListManager();
char packet[1200];
@@ -1098,7 +1096,6 @@
TEST_F(QuicDispatcherTest, VersionNegotiationProbeEndToEndOld) {
SetQuicFlag(FLAGS_quic_prober_uses_length_prefixed_connection_ids, false);
- SetQuicReloadableFlag(quic_use_length_prefix_from_packet_info, true);
SavingWriter* saving_writer = new SavingWriter();
// dispatcher_ takes ownership of saving_writer.
@@ -1143,7 +1140,6 @@
TEST_F(QuicDispatcherTest, VersionNegotiationProbeEndToEnd) {
SetQuicFlag(FLAGS_quic_prober_uses_length_prefixed_connection_ids, true);
- SetQuicReloadableFlag(quic_use_length_prefix_from_packet_info, true);
SavingWriter* saving_writer = new SavingWriter();
// dispatcher_ takes ownership of saving_writer.
diff --git a/quic/core/quic_framer.cc b/quic/core/quic_framer.cc
index 402135b..7c205cd 100644
--- a/quic/core/quic_framer.cc
+++ b/quic/core/quic_framer.cc
@@ -6584,27 +6584,6 @@
return false;
}
- if (!use_length_prefix && source_connection_id.length() == 0) {
- // We received a bad response due to b/139330014.
- // Reparse the packet assuming length prefixes.
- // This is a temporary client-side workaround until cl/263172621 is
- // deployed on production servers.
- // TODO(dschinazi): remove this client-side workaround once the server-side
- // fix is deployed.
- QuicDataReader reader2(packet_bytes, packet_length);
- uint8_t type_byte2 = 0;
- uint32_t version2 = 0;
- QuicConnectionId destination_connection_id2, source_connection_id2;
- if (reader2.ReadUInt8(&type_byte2) && reader2.ReadUInt32(&version2) &&
- reader2.ReadLengthPrefixedConnectionId(&destination_connection_id2) &&
- reader2.ReadLengthPrefixedConnectionId(&source_connection_id2) &&
- (type_byte2 & 0x80) != 0 && version2 == 0 &&
- destination_connection_id2.length() == 0 &&
- source_connection_id2.length() != 0) {
- source_connection_id = source_connection_id2;
- }
- }
-
memcpy(source_connection_id_bytes, source_connection_id.data(),
source_connection_id.length());
*source_connection_id_length_out = source_connection_id.length();
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc
index 14de6e9..5ca325c 100644
--- a/quic/core/quic_framer_test.cc
+++ b/quic/core/quic_framer_test.cc
@@ -13524,39 +13524,6 @@
probe_payload_bytes, sizeof(probe_payload_bytes));
}
-// Test the client-side workaround for b/139330014 where an old client expects
-// no length prefix but receives a length-prefixed response.
-TEST_P(QuicFramerTest, ParseBadServerVersionNegotiationProbeResponse) {
- SetQuicFlag(FLAGS_quic_prober_uses_length_prefixed_connection_ids, false);
- // clang-format off
- const char packet[] = {
- // IETF long header with fixed bit set, type initial, all-0 encrypted bits.
- 0xc0,
- // Version of 0, indicating version negotiation.
- 0x00, 0x00, 0x00, 0x00,
- // Destination connection ID length 0, source connection ID length 8.
- 0x00, 0x08,
- // 8-byte source connection ID.
- 0x56, 0x4e, 0x20, 0x70, 0x6c, 0x7a, 0x20, 0x21,
- // A few supported versions.
- 0xaa, 0xaa, 0xaa, 0xaa,
- QUIC_VERSION_BYTES,
- };
- // clang-format on
- char probe_payload_bytes[] = {0x56, 0x4e, 0x20, 0x70, 0x6c, 0x7a, 0x20, 0x21};
- char parsed_probe_payload_bytes[255] = {};
- uint8_t parsed_probe_payload_length = 0;
- std::string parse_detailed_error = "";
- EXPECT_TRUE(QuicFramer::ParseServerVersionNegotiationProbeResponse(
- reinterpret_cast<const char*>(packet), sizeof(packet),
- reinterpret_cast<char*>(parsed_probe_payload_bytes),
- &parsed_probe_payload_length, &parse_detailed_error));
- EXPECT_EQ("", parse_detailed_error);
- test::CompareCharArraysWithHexError(
- "parsed probe", parsed_probe_payload_bytes, parsed_probe_payload_length,
- probe_payload_bytes, sizeof(probe_payload_bytes));
-}
-
TEST_P(QuicFramerTest, ClientConnectionIdFromLongHeaderToClient) {
if (framer_.transport_version() <= QUIC_VERSION_43) {
// This test requires an IETF long header.