Deprecate Q048 and Q049
This CL also fully removes support for Q048 and Q049, now that we've fully deployed Q050 in production.
Deprecate gfe2_reloadable_flag_quic_disable_version_q048 and gfe2_reloadable_flag_quic_disable_version_q049
PiperOrigin-RevId: 321174732
Change-Id: Ie0c7c3bd1291ac2c474b316837df2b43ed60f45d
diff --git a/quic/core/crypto/crypto_utils.cc b/quic/core/crypto/crypto_utils.cc
index 3127ede..14c13fc 100644
--- a/quic/core/crypto/crypto_utils.cc
+++ b/quic/core/crypto/crypto_utils.cc
@@ -141,7 +141,7 @@
const uint8_t* InitialSaltForVersion(const ParsedQuicVersion& version,
size_t* out_len) {
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync with initial encryption salts");
switch (version.handshake_protocol) {
case PROTOCOL_QUIC_CRYPTO:
diff --git a/quic/core/quic_dispatcher_test.cc b/quic/core/quic_dispatcher_test.cc
index 01ed4fb..1d84b06 100644
--- a/quic/core/quic_dispatcher_test.cc
+++ b/quic/core/quic_dispatcher_test.cc
@@ -1085,12 +1085,38 @@
TEST_P(QuicDispatcherTestOneVersion,
RejectDeprecatedVersionsWithVersionNegotiation) {
- static_assert(quic::SupportedVersions().size() == 9u,
+ static_assert(quic::SupportedVersions().size() == 7u,
"Please add deprecated versions to this test");
QuicSocketAddress client_address(QuicIpAddress::Loopback4(), 1);
CreateTimeWaitListManager();
{
+ char packet49[kMinPacketSizeForVersionNegotiation] = {
+ 0xC0, 'Q', '0', '4', '9', /*connection ID length byte*/ 0x50};
+ QuicReceivedPacket received_packet49(
+ packet49, kMinPacketSizeForVersionNegotiation, QuicTime::Zero());
+ EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _)).Times(0);
+ EXPECT_CALL(*time_wait_list_manager_,
+ SendVersionNegotiationPacket(_, _, _, _, _, _, _, _))
+ .Times(1);
+ dispatcher_->ProcessPacket(server_address_, client_address,
+ received_packet49);
+ }
+
+ {
+ char packet48[kMinPacketSizeForVersionNegotiation] = {
+ 0xC0, 'Q', '0', '4', '8', /*connection ID length byte*/ 0x50};
+ QuicReceivedPacket received_packet48(
+ packet48, kMinPacketSizeForVersionNegotiation, QuicTime::Zero());
+ EXPECT_CALL(*dispatcher_, CreateQuicSession(_, _, _, _)).Times(0);
+ EXPECT_CALL(*time_wait_list_manager_,
+ SendVersionNegotiationPacket(_, _, _, _, _, _, _, _))
+ .Times(1);
+ dispatcher_->ProcessPacket(server_address_, client_address,
+ received_packet48);
+ }
+
+ {
char packet47[kMinPacketSizeForVersionNegotiation] = {
0xC0, 'Q', '0', '4', '7', /*connection ID length byte*/ 0x50};
QuicReceivedPacket received_packet47(
diff --git a/quic/core/quic_framer_test.cc b/quic/core/quic_framer_test.cc
index 5a5a8fa..c610997 100644
--- a/quic/core/quic_framer_test.cc
+++ b/quic/core/quic_framer_test.cc
@@ -1003,7 +1003,7 @@
// clang-format on
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -1029,7 +1029,7 @@
}
TEST_P(QuicFramerTest, PacketHeader) {
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -1108,7 +1108,7 @@
};
// clang-format on
- if (framer_.transport_version() <= QUIC_VERSION_43 ||
+ if (!framer_.version().HasIetfInvariantHeader() ||
QuicVersionHasLongHeaderLengths(framer_.transport_version())) {
return;
}
@@ -1154,7 +1154,7 @@
}
TEST_P(QuicFramerTest, LongPacketHeaderWithBothConnectionIds) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
// This test requires an IETF long header.
return;
}
@@ -1202,7 +1202,7 @@
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
}
@@ -1287,10 +1287,10 @@
// clang-format on
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_length = QUICHE_ARRAYSIZE(packet46);
}
@@ -1507,8 +1507,7 @@
PacketFragments& fragments =
framer_.version().HasHeaderProtection()
? packet_hp
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_FALSE(framer_.ProcessPacket(*encrypted));
@@ -1586,10 +1585,9 @@
// clang-format on
PacketFragments& fragments =
- framer_.transport_version() >= QUIC_VERSION_49
+ framer_.version().HasLongHeaderLengths()
? packet49
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_FALSE(framer_.ProcessPacket(*encrypted));
@@ -1650,8 +1648,7 @@
PacketFragments& fragments =
framer_.version().HasHeaderProtection()
? packet_hp
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_FALSE(framer_.ProcessPacket(*encrypted));
@@ -1713,8 +1710,7 @@
PacketFragments& fragments =
framer_.version().HasHeaderProtection()
? packet_hp
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
if (framer_.version().HasHeaderProtection()) {
@@ -1783,8 +1779,7 @@
PacketFragments& fragments =
framer_.version().HasHeaderProtection()
? packet_hp
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
if (framer_.version().HasHeaderProtection()) {
@@ -1950,10 +1945,10 @@
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_size = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -2025,10 +2020,10 @@
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_size = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -2131,7 +2126,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -2252,8 +2247,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -2398,10 +2392,10 @@
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_length = QUICHE_ARRAYSIZE(packet46);
}
@@ -2411,7 +2405,7 @@
EXPECT_THAT(framer_.error(), IsError(QUIC_DECRYPTION_FAILURE));
EXPECT_EQ("Unable to decrypt ENCRYPTION_ZERO_RTT header protection.",
framer_.detailed_error());
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
// Cannot read diversification nonce.
EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_PACKET_HEADER));
EXPECT_EQ("Unable to read nonce.", framer_.detailed_error());
@@ -2421,7 +2415,7 @@
}
TEST_P(QuicFramerTest, StreamFrame3ByteStreamId) {
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
// This test is nonsensical for IETF Quic.
return;
}
@@ -2576,8 +2570,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -2696,8 +2689,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -2896,10 +2888,10 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_49
+ : (framer_.version().HasLongHeaderLengths()
? packet49
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet));
+ : (framer_.version().HasIetfInvariantHeader() ? packet46
+ : packet));
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -2919,10 +2911,9 @@
EXPECT_EQ(kStreamOffset, visitor_.stream_frames_[0]->offset);
CheckStreamFrameData("hello world!", visitor_.stream_frames_[0].get());
- CheckFramingBoundaries(fragments,
- framer_.transport_version() >= QUIC_VERSION_49
- ? QUIC_INVALID_PACKET_HEADER
- : QUIC_INVALID_STREAM_DATA);
+ CheckFramingBoundaries(fragments, framer_.version().HasLongHeaderLengths()
+ ? QUIC_INVALID_PACKET_HEADER
+ : QUIC_INVALID_STREAM_DATA);
}
TEST_P(QuicFramerTest, RejectPacket) {
@@ -2978,11 +2969,11 @@
// clang-format on
unsigned char* p = packet;
- if (framer_.transport_version() >= QUIC_VERSION_46) {
+ if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
QuicEncryptedPacket encrypted(AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43
+ framer_.version().HasIetfInvariantHeader()
? QUICHE_ARRAYSIZE(packet46)
: QUICHE_ARRAYSIZE(packet),
false);
@@ -3019,13 +3010,12 @@
};
// clang-format on
- QuicEncryptedPacket encrypted(framer_.transport_version() >= QUIC_VERSION_46
- ? AsChars(packet46)
- : AsChars(packet),
- framer_.transport_version() >= QUIC_VERSION_46
- ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet),
- false);
+ QuicEncryptedPacket encrypted(
+ framer_.version().HasIetfInvariantHeader() ? AsChars(packet46)
+ : AsChars(packet),
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet),
+ false);
EXPECT_TRUE(framer_.ProcessPacket(encrypted));
EXPECT_THAT(framer_.error(), IsQuicNoError());
@@ -3131,8 +3121,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -3245,8 +3234,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_FALSE(framer_.ProcessPacket(*encrypted));
@@ -3624,7 +3612,7 @@
// clang-format on
PacketFragments& fragments =
- framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet;
+ framer_.version().HasIetfInvariantHeader() ? packet46 : packet;
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
@@ -3733,8 +3721,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -3955,8 +3942,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
@@ -4042,8 +4028,7 @@
return;
}
QuicEncryptedPacket encrypted(
- AsChars(framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet),
+ AsChars(framer_.version().HasIetfInvariantHeader() ? packet46 : packet),
QUICHE_ARRAYSIZE(packet), false);
EXPECT_FALSE(framer_.ProcessPacket(encrypted));
EXPECT_TRUE(quiche::QuicheTextUtils::StartsWith(
@@ -4116,8 +4101,7 @@
return;
}
QuicEncryptedPacket encrypted(
- AsChars(framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet),
+ AsChars(framer_.version().HasIetfInvariantHeader() ? packet46 : packet),
QUICHE_ARRAYSIZE(packet), false);
EXPECT_FALSE(framer_.ProcessPacket(encrypted));
EXPECT_TRUE(quiche::QuicheTextUtils::StartsWith(
@@ -4169,12 +4153,12 @@
// clang-format on
PacketFragments& fragments =
- framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet;
+ framer_.version().HasIetfInvariantHeader() ? packet46 : packet;
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
if (GetQuicReloadableFlag(quic_do_not_accept_stop_waiting) &&
- version_.transport_version >= QUIC_VERSION_46) {
+ framer_.version().HasIetfInvariantHeader()) {
EXPECT_FALSE(framer_.ProcessPacket(*encrypted));
EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_STOP_WAITING_DATA));
EXPECT_EQ("STOP WAITING not supported in version 44+.",
@@ -4202,7 +4186,7 @@
// The Stop Waiting frame is not in IETF QUIC
if (VersionHasIetfQuicFrames(version_.transport_version) ||
(GetQuicReloadableFlag(quic_do_not_accept_stop_waiting) &&
- version_.transport_version >= QUIC_VERSION_46)) {
+ framer_.version().HasIetfInvariantHeader())) {
return;
}
SetDecrypterLevel(ENCRYPTION_FORWARD_SECURE);
@@ -4236,10 +4220,9 @@
// clang-format on
QuicEncryptedPacket encrypted(
- AsChars(framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet),
+ AsChars(framer_.version().HasIetfInvariantHeader() ? packet46 : packet),
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet),
false);
EXPECT_FALSE(framer_.ProcessPacket(encrypted));
EXPECT_THAT(framer_.error(), IsError(QUIC_INVALID_STOP_WAITING_DATA));
@@ -4328,8 +4311,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -4439,8 +4421,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -4572,8 +4553,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -4802,7 +4782,7 @@
// clang-format on
PacketFragments& fragments =
- framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet;
+ framer_.version().HasIetfInvariantHeader() ? packet46 : packet;
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -4875,7 +4855,7 @@
// clang-format on
PacketFragments& fragments =
- framer_.transport_version() >= QUIC_VERSION_46 ? packet46 : packet;
+ framer_.version().HasIetfInvariantHeader() ? packet46 : packet;
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -5046,8 +5026,7 @@
PacketFragments& fragments =
VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet);
+ : (framer_.version().HasIetfInvariantHeader() ? packet46 : packet);
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -5115,11 +5094,11 @@
QuicEncryptedPacket encrypted(
AsChars(VersionHasIetfQuicFrames(framer_.transport_version())
? packet99
- : (framer_.transport_version() >= QUIC_VERSION_46 ? packet46
- : packet)),
+ : (framer_.version().HasIetfInvariantHeader() ? packet46
+ : packet)),
VersionHasIetfQuicFrames(framer_.transport_version())
? QUICHE_ARRAYSIZE(packet99)
- : (framer_.transport_version() >= QUIC_VERSION_46
+ : (framer_.version().HasIetfInvariantHeader()
? QUICHE_ARRAYSIZE(packet46)
: QUICHE_ARRAYSIZE(packet)),
false);
@@ -5333,7 +5312,7 @@
}
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -5388,7 +5367,7 @@
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -5436,7 +5415,7 @@
'j', 'u', 'n', 'k',
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -5488,7 +5467,7 @@
}
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -5522,7 +5501,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
// clang-format on
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
return;
}
QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
@@ -5566,7 +5545,7 @@
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
// clang-format on
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
return;
}
QuicFramerPeer::SetLastSerializedServerConnectionId(&framer_,
@@ -5650,9 +5629,9 @@
QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
PacketFragments& fragments =
- framer_.transport_version() >= QUIC_VERSION_49
- ? packet49
- : framer_.transport_version() > QUIC_VERSION_43 ? packet46 : packet;
+ framer_.version().HasLongHeaderLengths() ? packet49
+ : framer_.version().HasIetfInvariantHeader() ? packet46
+ : packet;
std::unique_ptr<QuicEncryptedPacket> encrypted(
AssemblePacketFromFragments(fragments));
EXPECT_TRUE(framer_.ProcessPacket(*encrypted));
@@ -5671,7 +5650,7 @@
}
TEST_P(QuicFramerTest, VersionNegotiationPacketServer) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -5738,7 +5717,7 @@
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -5827,7 +5806,7 @@
if (framer_.version().HasRetryIntegrityTag()) {
p = packet_with_tag;
p_length = QUICHE_ARRAYSIZE(packet_with_tag);
- } else if (framer_.transport_version() >= QUIC_VERSION_49) {
+ } else if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
}
@@ -5944,7 +5923,7 @@
unsigned char* p = packet;
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -5960,8 +5939,8 @@
quiche::test::CompareCharArraysWithHexError(
"constructed packet", data->data(), data->length(), AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet));
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet));
}
TEST_P(QuicFramerTest, BuildStreamFramePacketWithNewPaddingFrame) {
@@ -6068,7 +6047,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -6133,7 +6112,7 @@
unsigned char* p = packet;
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -6149,8 +6128,8 @@
quiche::test::CompareCharArraysWithHexError(
"constructed packet", data->data(), data->length(), AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet));
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet));
}
TEST_P(QuicFramerTest, Build2ByteSequenceNumberPaddingFramePacket) {
@@ -6208,7 +6187,7 @@
unsigned char* p = packet;
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -6224,8 +6203,8 @@
quiche::test::CompareCharArraysWithHexError(
"constructed packet", data->data(), data->length(), AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet));
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet));
}
TEST_P(QuicFramerTest, Build1ByteSequenceNumberPaddingFramePacket) {
@@ -6283,7 +6262,7 @@
unsigned char* p = packet;
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -6299,8 +6278,8 @@
quiche::test::CompareCharArraysWithHexError(
"constructed packet", data->data(), data->length(), AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet));
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet));
}
TEST_P(QuicFramerTest, BuildStreamFramePacket) {
@@ -6392,7 +6371,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -6405,7 +6384,7 @@
header.destination_connection_id = FramerTestConnectionId();
header.reset_flag = false;
header.version_flag = true;
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
header.long_packet_type = ZERO_RTT_PROTECTED;
}
header.packet_number = kPacketNumber;
@@ -6522,10 +6501,10 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_49) {
+ } else if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_size = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -6740,10 +6719,10 @@
// clang-format on
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_size = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() > QUIC_VERSION_43) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -6752,7 +6731,7 @@
std::unique_ptr<QuicEncryptedPacket> data(
QuicFramer::BuildVersionNegotiationPacket(
connection_id, EmptyQuicConnectionId(),
- framer_.transport_version() > QUIC_VERSION_43,
+ framer_.version().HasIetfInvariantHeader(),
framer_.version().HasLengthPrefixedConnectionIds(),
SupportedVersions(GetParam())));
quiche::test::CompareCharArraysWithHexError(
@@ -6877,7 +6856,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -6970,7 +6949,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -7118,7 +7097,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -7427,7 +7406,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -7440,7 +7419,7 @@
}
TEST_P(QuicFramerTest, BuildNewStopWaitingPacket) {
- if (version_.transport_version > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
@@ -7565,7 +7544,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -7659,7 +7638,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -7765,7 +7744,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -7946,7 +7925,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -8160,7 +8139,7 @@
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -8297,7 +8276,7 @@
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -8384,7 +8363,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -8556,7 +8535,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -8616,7 +8595,7 @@
unsigned char* p = packet;
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -8625,8 +8604,8 @@
quiche::test::CompareCharArraysWithHexError(
"constructed packet", data->data(), data->length(), AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet));
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet));
}
TEST_P(QuicFramerTest, BuildHandshakeDonePacket) {
@@ -8836,14 +8815,14 @@
unsigned char* p = packet;
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
quiche::test::CompareCharArraysWithHexError(
"constructed packet", data->data(), data->length(), AsChars(p),
- framer_.transport_version() > QUIC_VERSION_43 ? QUICHE_ARRAYSIZE(packet46)
- : QUICHE_ARRAYSIZE(packet));
+ framer_.version().HasIetfInvariantHeader() ? QUICHE_ARRAYSIZE(packet46)
+ : QUICHE_ARRAYSIZE(packet));
}
TEST_P(QuicFramerTest, BuildPublicResetPacket) {
@@ -8871,7 +8850,7 @@
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -8919,7 +8898,7 @@
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -8991,7 +8970,7 @@
};
// clang-format on
- if (framer_.transport_version() > QUIC_VERSION_43) {
+ if (framer_.version().HasIetfInvariantHeader()) {
return;
}
@@ -9096,10 +9075,10 @@
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_50) {
+ if (framer_.version().HasHeaderProtection()) {
p = packet50;
p_size = QUICHE_ARRAYSIZE(packet50);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -9200,10 +9179,10 @@
unsigned char* p = packet;
size_t p_size = QUICHE_ARRAYSIZE(packet);
// TODO(ianswett): see todo in previous test.
- if (framer_.transport_version() >= QUIC_VERSION_50) {
+ if (framer_.version().HasHeaderProtection()) {
p = packet50;
p_size = QUICHE_ARRAYSIZE(packet50);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -9535,7 +9514,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -12086,7 +12065,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
}
@@ -12164,7 +12143,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -12272,7 +12251,7 @@
if (VersionHasIetfQuicFrames(framer_.transport_version())) {
p = packet99;
p_size = QUICHE_ARRAYSIZE(packet99);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_size = QUICHE_ARRAYSIZE(packet46);
}
@@ -12793,10 +12772,10 @@
// clang-format on
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_length = QUICHE_ARRAYSIZE(packet46);
}
@@ -12895,10 +12874,10 @@
// clang-format on
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
- } else if (framer_.transport_version() >= QUIC_VERSION_46) {
+ } else if (framer_.version().HasIetfInvariantHeader()) {
p = packet46;
p_length = QUICHE_ARRAYSIZE(packet46);
}
@@ -13413,7 +13392,7 @@
}
TEST_P(QuicFramerTest, ClientReceivesInvalidVersion) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
return;
}
QuicFramerPeer::SetPerspective(&framer_, Perspective::IS_CLIENT);
@@ -13506,7 +13485,7 @@
}
TEST_P(QuicFramerTest, MultiplePacketNumberSpaces) {
- if (framer_.transport_version() < QUIC_VERSION_46) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
return;
}
framer_.EnableMultiplePacketNumberSpacesSupport();
@@ -13642,7 +13621,7 @@
}
TEST_P(QuicFramerTest, RetryPacketRejectedWithMultiplePacketNumberSpaces) {
- if (framer_.transport_version() < QUIC_VERSION_46 ||
+ if (!framer_.version().HasIetfInvariantHeader() ||
framer_.version().SupportsRetry()) {
return;
}
@@ -13804,7 +13783,7 @@
QuicEncryptedPacket encrypted(reinterpret_cast<const char*>(packet),
sizeof(packet), false);
// Make sure we fail to parse this packet for the version under test.
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
// We can only parse the connection ID with an IETF parser.
EXPECT_FALSE(framer_.ProcessPacket(encrypted));
return;
@@ -14136,7 +14115,7 @@
}
TEST_P(QuicFramerTest, ClientConnectionIdFromLongHeaderToClient) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
// This test requires an IETF long header.
return;
}
@@ -14182,7 +14161,7 @@
// clang-format on
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
}
@@ -14203,7 +14182,7 @@
}
TEST_P(QuicFramerTest, ClientConnectionIdFromLongHeaderToServer) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
// This test requires an IETF long header.
return;
}
@@ -14247,7 +14226,7 @@
// clang-format on
unsigned char* p = packet;
size_t p_length = QUICHE_ARRAYSIZE(packet);
- if (framer_.transport_version() >= QUIC_VERSION_49) {
+ if (framer_.version().HasLongHeaderLengths()) {
p = packet49;
p_length = QUICHE_ARRAYSIZE(packet49);
}
@@ -14275,7 +14254,7 @@
}
TEST_P(QuicFramerTest, ProcessAndValidateIetfConnectionIdLengthClient) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
// This test requires an IETF long header.
return;
}
@@ -14313,7 +14292,7 @@
}
TEST_P(QuicFramerTest, ProcessAndValidateIetfConnectionIdLengthServer) {
- if (framer_.transport_version() <= QUIC_VERSION_43) {
+ if (!framer_.version().HasIetfInvariantHeader()) {
// This test requires an IETF long header.
return;
}
diff --git a/quic/core/quic_version_manager.cc b/quic/core/quic_version_manager.cc
index 90c4982..0563797 100644
--- a/quic/core/quic_version_manager.cc
+++ b/quic/core/quic_version_manager.cc
@@ -23,12 +23,10 @@
GetQuicReloadableFlag(quic_disable_version_draft_25)),
disable_version_q050_(GetQuicReloadableFlag(quic_disable_version_q050)),
disable_version_t050_(GetQuicReloadableFlag(quic_disable_version_t050)),
- disable_version_q049_(GetQuicReloadableFlag(quic_disable_version_q049)),
- disable_version_q048_(GetQuicReloadableFlag(quic_disable_version_q048)),
disable_version_q046_(GetQuicReloadableFlag(quic_disable_version_q046)),
disable_version_q043_(GetQuicReloadableFlag(quic_disable_version_q043)),
allowed_supported_versions_(std::move(supported_versions)) {
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync");
RefilterSupportedVersions();
}
@@ -58,7 +56,7 @@
}
void QuicVersionManager::MaybeRefilterSupportedVersions() {
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync");
if (enable_version_draft_29_ !=
GetQuicReloadableFlag(quic_enable_version_draft_29) ||
@@ -70,10 +68,6 @@
GetQuicReloadableFlag(quic_disable_version_q050) ||
disable_version_t050_ !=
GetQuicReloadableFlag(quic_disable_version_t050) ||
- disable_version_q049_ !=
- GetQuicReloadableFlag(quic_disable_version_q049) ||
- disable_version_q048_ !=
- GetQuicReloadableFlag(quic_disable_version_q048) ||
disable_version_q046_ !=
GetQuicReloadableFlag(quic_disable_version_q046) ||
disable_version_q043_ !=
@@ -86,8 +80,6 @@
GetQuicReloadableFlag(quic_disable_version_draft_25);
disable_version_q050_ = GetQuicReloadableFlag(quic_disable_version_q050);
disable_version_t050_ = GetQuicReloadableFlag(quic_disable_version_t050);
- disable_version_q049_ = GetQuicReloadableFlag(quic_disable_version_q049);
- disable_version_q048_ = GetQuicReloadableFlag(quic_disable_version_q048);
disable_version_q046_ = GetQuicReloadableFlag(quic_disable_version_q046);
disable_version_q043_ = GetQuicReloadableFlag(quic_disable_version_q043);
diff --git a/quic/core/quic_version_manager.h b/quic/core/quic_version_manager.h
index e6bb8f6..d86260f 100644
--- a/quic/core/quic_version_manager.h
+++ b/quic/core/quic_version_manager.h
@@ -62,10 +62,6 @@
bool disable_version_q050_;
// quic_disable_version_t050 flag
bool disable_version_t050_;
- // quic_disable_version_q049 flag
- bool disable_version_q049_;
- // quic_disable_version_q048 flag
- bool disable_version_q048_;
// quic_disable_version_q046 flag
bool disable_version_q046_;
// quic_disable_version_q043 flag
diff --git a/quic/core/quic_version_manager_test.cc b/quic/core/quic_version_manager_test.cc
index 4687b79..4106f60 100644
--- a/quic/core/quic_version_manager_test.cc
+++ b/quic/core/quic_version_manager_test.cc
@@ -18,15 +18,13 @@
class QuicVersionManagerTest : public QuicTest {};
TEST_F(QuicVersionManagerTest, QuicVersionManager) {
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync");
SetQuicReloadableFlag(quic_enable_version_draft_29, false);
SetQuicReloadableFlag(quic_disable_version_draft_27, true);
SetQuicReloadableFlag(quic_disable_version_draft_25, true);
SetQuicReloadableFlag(quic_disable_version_t050, false);
SetQuicReloadableFlag(quic_disable_version_q050, false);
- SetQuicReloadableFlag(quic_disable_version_q049, false);
- SetQuicReloadableFlag(quic_disable_version_q048, false);
SetQuicReloadableFlag(quic_disable_version_q046, false);
SetQuicReloadableFlag(quic_disable_version_q043, false);
QuicVersionManager manager(AllSupportedVersions());
@@ -37,10 +35,6 @@
expected_parsed_versions.push_back(
ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50));
expected_parsed_versions.push_back(
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49));
- expected_parsed_versions.push_back(
- ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48));
- expected_parsed_versions.push_back(
ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46));
expected_parsed_versions.push_back(
ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_43));
@@ -52,8 +46,7 @@
EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),
- ElementsAre("h3-T050", "h3-Q050", "h3-Q049", "h3-Q048", "h3-Q046",
- "h3-Q043"));
+ ElementsAre("h3-T050", "h3-Q050", "h3-Q046", "h3-Q043"));
SetQuicReloadableFlag(quic_enable_version_draft_29, true);
expected_parsed_versions.insert(expected_parsed_versions.begin(),
@@ -66,8 +59,7 @@
EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),
- ElementsAre("h3-29", "h3-T050", "h3-Q050", "h3-Q049", "h3-Q048",
- "h3-Q046", "h3-Q043"));
+ ElementsAre("h3-29", "h3-T050", "h3-Q050", "h3-Q046", "h3-Q043"));
SetQuicReloadableFlag(quic_disable_version_draft_27, false);
expected_parsed_versions.insert(
@@ -81,8 +73,8 @@
EXPECT_EQ(CurrentSupportedVersionsWithQuicCrypto(),
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),
- ElementsAre("h3-29", "h3-27", "h3-T050", "h3-Q050", "h3-Q049",
- "h3-Q048", "h3-Q046", "h3-Q043"));
+ ElementsAre("h3-29", "h3-27", "h3-T050", "h3-Q050", "h3-Q046",
+ "h3-Q043"));
SetQuicReloadableFlag(quic_disable_version_draft_25, false);
expected_parsed_versions.insert(
@@ -95,7 +87,7 @@
manager.GetSupportedVersionsWithQuicCrypto());
EXPECT_THAT(manager.GetSupportedAlpns(),
ElementsAre("h3-29", "h3-27", "h3-25", "h3-T050", "h3-Q050",
- "h3-Q049", "h3-Q048", "h3-Q046", "h3-Q043"));
+ "h3-Q046", "h3-Q043"));
}
} // namespace
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 5090344..cc7e0c6 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -40,7 +40,7 @@
}
void SetVersionFlag(const ParsedQuicVersion& version, bool should_enable) {
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync");
const bool enable = should_enable;
const bool disable = !should_enable;
@@ -54,10 +54,6 @@
SetQuicReloadableFlag(quic_disable_version_t050, disable);
} else if (version == ParsedQuicVersion::Q050()) {
SetQuicReloadableFlag(quic_disable_version_q050, disable);
- } else if (version == ParsedQuicVersion::Q049()) {
- SetQuicReloadableFlag(quic_disable_version_q049, disable);
- } else if (version == ParsedQuicVersion::Q048()) {
- SetQuicReloadableFlag(quic_disable_version_q048, disable);
} else if (version == ParsedQuicVersion::Q046()) {
SetQuicReloadableFlag(quic_disable_version_q046, disable);
} else if (version == ParsedQuicVersion::Q043()) {
@@ -79,29 +75,30 @@
bool ParsedQuicVersion::KnowsWhichDecrypterToUse() const {
DCHECK(IsKnown());
- return transport_version > QUIC_VERSION_46 ||
- handshake_protocol == PROTOCOL_TLS1_3;
+ return transport_version > QUIC_VERSION_46;
}
bool ParsedQuicVersion::UsesInitialObfuscators() const {
DCHECK(IsKnown());
- return transport_version > QUIC_VERSION_49 ||
- handshake_protocol == PROTOCOL_TLS1_3;
+ // Initial obfuscators were added in version 50.
+ return transport_version > QUIC_VERSION_46;
}
bool ParsedQuicVersion::AllowsLowFlowControlLimits() const {
DCHECK(IsKnown());
- return transport_version >= QUIC_VERSION_IETF_DRAFT_25 &&
- handshake_protocol == PROTOCOL_TLS1_3;
+ // Low flow-control limits are used for all IETF versions.
+ return UsesHttp3();
}
bool ParsedQuicVersion::HasHeaderProtection() const {
DCHECK(IsKnown());
- return transport_version > QUIC_VERSION_49;
+ // Header protection was added in version 50.
+ return transport_version > QUIC_VERSION_46;
}
bool ParsedQuicVersion::SupportsRetry() const {
DCHECK(IsKnown());
+ // Retry was added in version 47.
return transport_version > QUIC_VERSION_46;
}
@@ -122,7 +119,8 @@
bool ParsedQuicVersion::SupportsClientConnectionIds() const {
DCHECK(IsKnown());
- return transport_version > QUIC_VERSION_48;
+ // Client connection IDs were added in version 49.
+ return transport_version > QUIC_VERSION_46;
}
bool ParsedQuicVersion::HasLengthPrefixedConnectionIds() const {
@@ -132,8 +130,8 @@
bool ParsedQuicVersion::SupportsAntiAmplificationLimit() const {
DCHECK(IsKnown());
- return transport_version >= QUIC_VERSION_IETF_DRAFT_25 &&
- handshake_protocol == PROTOCOL_TLS1_3;
+ // The anti-amplification limit is used for all IETF versions.
+ return UsesHttp3();
}
bool ParsedQuicVersion::CanSendCoalescedPackets() const {
@@ -184,11 +182,13 @@
bool ParsedQuicVersion::HasVarIntTransportParams() const {
DCHECK(IsKnown());
- return transport_version >= QUIC_VERSION_IETF_DRAFT_27;
+ // Variable-length integer transport parameters were added in draft-27.
+ return transport_version > QUIC_VERSION_IETF_DRAFT_25;
}
bool ParsedQuicVersion::AuthenticatesHandshakeConnectionIds() const {
DCHECK(IsKnown());
+ // Authentication of handshake connection IDs was added in draft-28.
return transport_version > QUIC_VERSION_IETF_DRAFT_27;
}
@@ -205,7 +205,8 @@
bool VersionHasLengthPrefixedConnectionIds(
QuicTransportVersion transport_version) {
DCHECK(transport_version != QUIC_VERSION_UNSUPPORTED);
- return transport_version > QUIC_VERSION_48;
+ // Length-prefixed connection IDs were added in version 49.
+ return transport_version > QUIC_VERSION_46;
}
std::ostream& operator<<(std::ostream& os, const ParsedQuicVersion& version) {
@@ -245,17 +246,13 @@
<< parsed_version.handshake_protocol;
return 0;
}
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync");
switch (parsed_version.transport_version) {
case QUIC_VERSION_43:
return MakeVersionLabel(proto, '0', '4', '3');
case QUIC_VERSION_46:
return MakeVersionLabel(proto, '0', '4', '6');
- case QUIC_VERSION_48:
- return MakeVersionLabel(proto, '0', '4', '8');
- case QUIC_VERSION_49:
- return MakeVersionLabel(proto, '0', '4', '9');
case QUIC_VERSION_50:
return MakeVersionLabel(proto, '0', '5', '0');
case QUIC_VERSION_IETF_DRAFT_25:
@@ -457,14 +454,6 @@
filtered_versions.push_back(version);
}
}
- } else if (version.transport_version == QUIC_VERSION_49) {
- if (!GetQuicReloadableFlag(quic_disable_version_q049)) {
- filtered_versions.push_back(version);
- }
- } else if (version.transport_version == QUIC_VERSION_48) {
- if (!GetQuicReloadableFlag(quic_disable_version_q048)) {
- filtered_versions.push_back(version);
- }
} else if (version.transport_version == QUIC_VERSION_46) {
QUIC_BUG_IF(version.handshake_protocol != PROTOCOL_QUIC_CRYPTO);
if (!GetQuicReloadableFlag(quic_disable_version_q046)) {
@@ -563,13 +552,11 @@
return #x
std::string QuicVersionToString(QuicTransportVersion transport_version) {
- static_assert(SupportedTransportVersions().size() == 8u,
+ static_assert(SupportedTransportVersions().size() == 6u,
"Supported versions out of sync");
switch (transport_version) {
RETURN_STRING_LITERAL(QUIC_VERSION_43);
RETURN_STRING_LITERAL(QUIC_VERSION_46);
- RETURN_STRING_LITERAL(QUIC_VERSION_48);
- RETURN_STRING_LITERAL(QUIC_VERSION_49);
RETURN_STRING_LITERAL(QUIC_VERSION_50);
RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_25);
RETURN_STRING_LITERAL(QUIC_VERSION_IETF_DRAFT_27);
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index 341d398..aaceba1 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -113,9 +113,9 @@
QUIC_VERSION_46 = 46, // Use IETF draft-17 header format with demultiplexing
// bit.
// Version 47 added variable-length QUIC server connection IDs.
- QUIC_VERSION_48 = 48, // Use CRYPTO frames for the handshake.
- QUIC_VERSION_49 = 49, // Client connection IDs, long header lengths, IETF
- // header format from draft-ietf-quic-invariants-06.
+ // Version 48 added CRYPTO frames for the handshake.
+ // Version 49 added client connection IDs, long header lengths, and the IETF
+ // header format from draft-ietf-quic-invariants-06
QUIC_VERSION_50 = 50, // Header protection and initial obfuscators.
QUIC_VERSION_IETF_DRAFT_25 = 70, // draft-ietf-quic-transport-25.
QUIC_VERSION_IETF_DRAFT_27 = 71, // draft-ietf-quic-transport-27.
@@ -135,13 +135,11 @@
// This array contains QUIC transport versions which we currently support.
// DEPRECATED. Use SupportedVersions() instead.
-constexpr std::array<QuicTransportVersion, 8> SupportedTransportVersions() {
+constexpr std::array<QuicTransportVersion, 6> SupportedTransportVersions() {
return {QUIC_VERSION_IETF_DRAFT_29,
QUIC_VERSION_IETF_DRAFT_27,
QUIC_VERSION_IETF_DRAFT_25,
QUIC_VERSION_50,
- QUIC_VERSION_49,
- QUIC_VERSION_48,
QUIC_VERSION_46,
QUIC_VERSION_43};
}
@@ -166,7 +164,8 @@
// instead of stream 1.
QUIC_EXPORT_PRIVATE constexpr bool QuicVersionUsesCryptoFrames(
QuicTransportVersion transport_version) {
- return transport_version >= QUIC_VERSION_48;
+ // CRYPTO frames were added in version 48.
+ return transport_version > QUIC_VERSION_46;
}
// Returns whether this combination of handshake protocol and transport
@@ -202,11 +201,8 @@
transport_version != QUIC_VERSION_IETF_DRAFT_27 &&
transport_version != QUIC_VERSION_IETF_DRAFT_29;
case PROTOCOL_TLS1_3:
- // The TLS handshake is only deployable if CRYPTO frames are also used.
- // We explicitly removed support for T048 and T049 to reduce test load.
return transport_version != QUIC_VERSION_UNSUPPORTED &&
- QuicVersionUsesCryptoFrames(transport_version) &&
- transport_version > QUIC_VERSION_49;
+ QuicVersionUsesCryptoFrames(transport_version);
}
return false;
}
@@ -271,14 +267,6 @@
return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_50);
}
- static constexpr ParsedQuicVersion Q049() {
- return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_49);
- }
-
- static constexpr ParsedQuicVersion Q048() {
- return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_48);
- }
-
static constexpr ParsedQuicVersion Q046() {
return ParsedQuicVersion(PROTOCOL_QUIC_CRYPTO, QUIC_VERSION_46);
}
@@ -427,12 +415,11 @@
return {PROTOCOL_TLS1_3, PROTOCOL_QUIC_CRYPTO};
}
-constexpr std::array<ParsedQuicVersion, 9> SupportedVersions() {
+constexpr std::array<ParsedQuicVersion, 7> SupportedVersions() {
return {
ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft27(),
ParsedQuicVersion::Draft25(), ParsedQuicVersion::T050(),
- ParsedQuicVersion::Q050(), ParsedQuicVersion::Q049(),
- ParsedQuicVersion::Q048(), ParsedQuicVersion::Q046(),
+ ParsedQuicVersion::Q050(), ParsedQuicVersion::Q046(),
ParsedQuicVersion::Q043(),
};
}
@@ -602,7 +589,8 @@
// Returns true if |transport_version| supports MESSAGE frames.
QUIC_EXPORT_PRIVATE constexpr bool VersionSupportsMessageFrames(
QuicTransportVersion transport_version) {
- return transport_version >= QUIC_VERSION_46;
+ // MESSAGE frames were added in version 45.
+ return transport_version > QUIC_VERSION_43;
}
// If true, HTTP/3 instead of gQUIC will be used at the HTTP layer.
@@ -623,14 +611,15 @@
// length field as defined by IETF QUIC draft-13 and later.
QUIC_EXPORT_PRIVATE constexpr bool QuicVersionHasLongHeaderLengths(
QuicTransportVersion transport_version) {
- return transport_version >= QUIC_VERSION_49;
+ // Long header lengths were added in version 49.
+ return transport_version > QUIC_VERSION_46;
}
// Returns whether |transport_version| makes use of IETF QUIC
// frames or not.
QUIC_EXPORT_PRIVATE constexpr bool VersionHasIetfQuicFrames(
QuicTransportVersion transport_version) {
- return transport_version >= QUIC_VERSION_IETF_DRAFT_25;
+ return VersionUsesHttp3(transport_version);
}
// Returns whether this version supports long header 8-bit encoded
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index c7ebb82..8569007 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -210,8 +210,6 @@
ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '3')));
EXPECT_EQ(ParsedQuicVersion::Q046(),
ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '6')));
- EXPECT_EQ(ParsedQuicVersion::Q048(),
- ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '4', '8')));
EXPECT_EQ(ParsedQuicVersion::Q050(),
ParseQuicVersionLabel(MakeVersionLabel('Q', '0', '5', '0')));
EXPECT_EQ(ParsedQuicVersion::T050(),
@@ -224,7 +222,6 @@
ParseQuicVersionString("QUIC_VERSION_46"));
EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionString("46"));
EXPECT_EQ(ParsedQuicVersion::Q046(), ParseQuicVersionString("Q046"));
- EXPECT_EQ(ParsedQuicVersion::Q048(), ParseQuicVersionString("Q048"));
EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("Q050"));
EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("50"));
EXPECT_EQ(ParsedQuicVersion::Q050(), ParseQuicVersionString("h3-Q050"));
@@ -325,8 +322,6 @@
CreateQuicVersionLabel(ParsedQuicVersion::Q043()));
EXPECT_EQ(MakeVersionLabel('Q', '0', '4', '6'),
CreateQuicVersionLabel(ParsedQuicVersion::Q046()));
- EXPECT_EQ(MakeVersionLabel('Q', '0', '4', '8'),
- CreateQuicVersionLabel(ParsedQuicVersion::Q048()));
EXPECT_EQ(MakeVersionLabel('Q', '0', '5', '0'),
CreateQuicVersionLabel(ParsedQuicVersion::Q050()));
@@ -493,12 +488,10 @@
// yet a typo was made in doing the #defines and it was caught
// only in some test far removed from here... Better safe than sorry.
TEST_F(QuicVersionsTest, CheckTransportVersionNumbersForTypos) {
- static_assert(SupportedTransportVersions().size() == 8u,
+ static_assert(SupportedTransportVersions().size() == 6u,
"Supported versions out of sync");
EXPECT_EQ(QUIC_VERSION_43, 43);
EXPECT_EQ(QUIC_VERSION_46, 46);
- EXPECT_EQ(QUIC_VERSION_48, 48);
- EXPECT_EQ(QUIC_VERSION_49, 49);
EXPECT_EQ(QUIC_VERSION_50, 50);
EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_25, 70);
EXPECT_EQ(QUIC_VERSION_IETF_DRAFT_27, 71);
@@ -506,17 +499,13 @@
}
TEST_F(QuicVersionsTest, AlpnForVersion) {
- static_assert(SupportedVersions().size() == 9u,
+ static_assert(SupportedVersions().size() == 7u,
"Supported versions out of sync");
- ParsedQuicVersion parsed_version_q048 = ParsedQuicVersion::Q048();
- ParsedQuicVersion parsed_version_q049 = ParsedQuicVersion::Q049();
ParsedQuicVersion parsed_version_q050 = ParsedQuicVersion::Q050();
ParsedQuicVersion parsed_version_t050 = ParsedQuicVersion::T050();
ParsedQuicVersion parsed_version_draft_25 = ParsedQuicVersion::Draft25();
ParsedQuicVersion parsed_version_draft_27 = ParsedQuicVersion::Draft27();
- EXPECT_EQ("h3-Q048", AlpnForVersion(parsed_version_q048));
- EXPECT_EQ("h3-Q049", AlpnForVersion(parsed_version_q049));
EXPECT_EQ("h3-Q050", AlpnForVersion(parsed_version_q050));
EXPECT_EQ("h3-T050", AlpnForVersion(parsed_version_t050));
EXPECT_EQ("h3-25", AlpnForVersion(parsed_version_draft_25));
diff --git a/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc b/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
index 9b5d64d..a35919e 100644
--- a/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
+++ b/quic/test_tools/fuzzing/quic_framer_process_data_packet_fuzzer.cc
@@ -60,7 +60,6 @@
const QuicTransportVersion transport_versions[] = {
quic::QUIC_VERSION_43,
quic::QUIC_VERSION_46,
- quic::QUIC_VERSION_48,
};
return ParsedQuicVersion(