Make sure QuicVersionsTest.InitializeSupportForIetfDraft reverts global state
Chromium net-unittests were failing when run in the same process because InitializeSupportForIetfDraft was changing global state that some QuicFramerTests were not expecting. This CL makes QuicVersionInitializeSupportForIetfDraft(0) disable the flags and has the test call it. No other code was previously calling QuicVersionInitializeSupportForIetfDraft(0).
./chromium/src/out/Default/net_unittests --single-process-tests --gtest_filter='*QuicVersionsTest*:*QuicFramerTest*'
https://bugs.chromium.org/p/chromium/issues/detail?id=950935
gfe-relnote: test-only change
PiperOrigin-RevId: 242761668
Change-Id: I8c7f77f06fb2152eb5c84eae631f5003859d9c1a
diff --git a/quic/core/quic_versions.cc b/quic/core/quic_versions.cc
index 83263de..ef2657c 100644
--- a/quic/core/quic_versions.cc
+++ b/quic/core/quic_versions.cc
@@ -25,10 +25,6 @@
return MakeQuicTag(d, c, b, a);
}
-// IETF draft version for ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_99).
-// Overrides the version label and ALPN string for IETF interop events.
-int32_t kQuicT099IetfDraftVersion = 0;
-
} // namespace
ParsedQuicVersion::ParsedQuicVersion(HandshakeProtocol handshake_protocol,
@@ -78,8 +74,8 @@
return MakeVersionLabel(proto, '0', '4', '7');
case QUIC_VERSION_99:
if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3 &&
- kQuicT099IetfDraftVersion != 0) {
- return 0xff000000 + kQuicT099IetfDraftVersion;
+ GetQuicFlag(FLAGS_quic_ietf_draft_version) != 0) {
+ return 0xff000000 + GetQuicFlag(FLAGS_quic_ietf_draft_version);
}
return MakeVersionLabel(proto, '0', '9', '9');
default:
@@ -145,7 +141,7 @@
}
}
}
- // Still recognize T099 even if kQuicT099IetfDraftVersion has been changed.
+ // Still recognize T099 even if flag quic_ietf_draft_version has been changed.
if (FLAGS_quic_supports_tls_handshake && version_string == "T099") {
return ParsedQuicVersion(PROTOCOL_TLS1_3, QUIC_VERSION_99);
}
@@ -386,22 +382,24 @@
std::string AlpnForVersion(ParsedQuicVersion parsed_version) {
if (parsed_version.handshake_protocol == PROTOCOL_TLS1_3 &&
parsed_version.transport_version == QUIC_VERSION_99 &&
- kQuicT099IetfDraftVersion != 0) {
- return "h3-" + QuicTextUtils::Uint64ToString(kQuicT099IetfDraftVersion);
+ GetQuicFlag(FLAGS_quic_ietf_draft_version) != 0) {
+ return "h3-" + QuicTextUtils::Uint64ToString(
+ GetQuicFlag(FLAGS_quic_ietf_draft_version));
}
return "h3-google-" + ParsedQuicVersionToString(parsed_version);
}
void QuicVersionInitializeSupportForIetfDraft(int32_t draft_version) {
- if (draft_version == 0) {
- return;
- }
if (draft_version < 0 || draft_version >= 256) {
LOG(FATAL) << "Invalid IETF draft version " << draft_version;
return;
}
- kQuicT099IetfDraftVersion = draft_version;
+ SetQuicFlag(&FLAGS_quic_ietf_draft_version, draft_version);
+
+ if (draft_version == 0) {
+ return;
+ }
// Enable necessary flags.
SetQuicFlag(&FLAGS_quic_supports_tls_handshake, true);
diff --git a/quic/core/quic_versions_test.cc b/quic/core/quic_versions_test.cc
index 09ed5e8..b04db0c 100644
--- a/quic/core/quic_versions_test.cc
+++ b/quic/core/quic_versions_test.cc
@@ -591,6 +591,11 @@
EXPECT_EQ(MakeVersionLabel(0xff, 0, 0, 18),
CreateQuicVersionLabel(parsed_version_t099));
EXPECT_EQ("h3-18", AlpnForVersion(parsed_version_t099));
+
+ QuicVersionInitializeSupportForIetfDraft(0);
+ EXPECT_EQ(MakeVersionLabel('T', '0', '9', '9'),
+ CreateQuicVersionLabel(parsed_version_t099));
+ EXPECT_EQ("h3-google-T099", AlpnForVersion(parsed_version_t099));
}
TEST_F(QuicVersionsTest, QuicEnableVersion) {