Introduce QUIC version T051
This version is a minor upgrade to T050 that brings in features that have been added to draft-27 and draft-29. This will allow us to remove multiple codepaths when we deprecate T050 and draft-25.
Introduce QUIC version T051, protected by gfe2_reloadable_flag_quic_enable_version_t051
PiperOrigin-RevId: 324040649
Change-Id: I3501bf03939f29bd17416510f43bc85d30832e29
diff --git a/quic/core/quic_versions.h b/quic/core/quic_versions.h
index aaceba1..7ea590a 100644
--- a/quic/core/quic_versions.h
+++ b/quic/core/quic_versions.h
@@ -117,6 +117,7 @@
// 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_51 = 51, // draft-29 features but with GoogleQUIC frames.
QUIC_VERSION_IETF_DRAFT_25 = 70, // draft-ietf-quic-transport-25.
QUIC_VERSION_IETF_DRAFT_27 = 71, // draft-ietf-quic-transport-27.
// Number 72 used to represent draft-ietf-quic-transport-28.
@@ -135,10 +136,11 @@
// This array contains QUIC transport versions which we currently support.
// DEPRECATED. Use SupportedVersions() instead.
-constexpr std::array<QuicTransportVersion, 6> SupportedTransportVersions() {
+constexpr std::array<QuicTransportVersion, 7> SupportedTransportVersions() {
return {QUIC_VERSION_IETF_DRAFT_29,
QUIC_VERSION_IETF_DRAFT_27,
QUIC_VERSION_IETF_DRAFT_25,
+ QUIC_VERSION_51,
QUIC_VERSION_50,
QUIC_VERSION_46,
QUIC_VERSION_43};
@@ -197,6 +199,7 @@
return transport_version == QUIC_VERSION_UNSUPPORTED;
case PROTOCOL_QUIC_CRYPTO:
return transport_version != QUIC_VERSION_UNSUPPORTED &&
+ transport_version != QUIC_VERSION_51 &&
transport_version != QUIC_VERSION_IETF_DRAFT_25 &&
transport_version != QUIC_VERSION_IETF_DRAFT_27 &&
transport_version != QUIC_VERSION_IETF_DRAFT_29;
@@ -259,6 +262,10 @@
return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_IETF_DRAFT_25);
}
+ static constexpr ParsedQuicVersion T051() {
+ return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_51);
+ }
+
static constexpr ParsedQuicVersion T050() {
return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_50);
}
@@ -415,12 +422,12 @@
return {PROTOCOL_TLS1_3, PROTOCOL_QUIC_CRYPTO};
}
-constexpr std::array<ParsedQuicVersion, 7> SupportedVersions() {
+constexpr std::array<ParsedQuicVersion, 8> SupportedVersions() {
return {
ParsedQuicVersion::Draft29(), ParsedQuicVersion::Draft27(),
- ParsedQuicVersion::Draft25(), ParsedQuicVersion::T050(),
- ParsedQuicVersion::Q050(), ParsedQuicVersion::Q046(),
- ParsedQuicVersion::Q043(),
+ ParsedQuicVersion::Draft25(), ParsedQuicVersion::T051(),
+ ParsedQuicVersion::T050(), ParsedQuicVersion::Q050(),
+ ParsedQuicVersion::Q046(), ParsedQuicVersion::Q043(),
};
}
@@ -604,7 +611,7 @@
// * GOAWAY is moved to HTTP layer.
QUIC_EXPORT_PRIVATE constexpr bool VersionUsesHttp3(
QuicTransportVersion transport_version) {
- return transport_version >= QUIC_VERSION_IETF_DRAFT_25;
+ return transport_version > QUIC_VERSION_51;
}
// Returns whether the transport_version supports the variable length integer