Deprecate --gfe2_reloadable_flag_quic_verify_request_headers_2
PiperOrigin-RevId: 526029802
diff --git a/quiche/http2/http2_constants.cc b/quiche/http2/http2_constants.cc
index a4b6105..c8f6721 100644
--- a/quiche/http2/http2_constants.cc
+++ b/quiche/http2/http2_constants.cc
@@ -160,18 +160,7 @@
"transfer-encoding", "",
};
-constexpr char const* kHttp2InvalidHeaderNamesOld[] = {
- "connection", "host", "keep-alive", "proxy-connection", "transfer-encoding",
-};
-
const InvalidHeaderSet& GetInvalidHttp2HeaderSet() {
- if (!GetQuicheReloadableFlag(quic, quic_verify_request_headers_2)) {
- static const auto* invalid_header_set_old =
- new InvalidHeaderSet(std::begin(http2::kHttp2InvalidHeaderNamesOld),
- std::end(http2::kHttp2InvalidHeaderNamesOld));
- return *invalid_header_set_old;
- }
- QUICHE_RELOADABLE_FLAG_COUNT_N(quic_verify_request_headers_2, 3, 3);
static const auto* invalid_header_set =
new InvalidHeaderSet(std::begin(http2::kHttp2InvalidHeaderNames),
std::end(http2::kHttp2InvalidHeaderNames));
diff --git a/quiche/quic/core/http/end_to_end_test.cc b/quiche/quic/core/http/end_to_end_test.cc
index 6b820b1..c6db0b6 100644
--- a/quiche/quic/core/http/end_to_end_test.cc
+++ b/quiche/quic/core/http/end_to_end_test.cc
@@ -7060,7 +7060,6 @@
}
TEST_P(EndToEndTest, InvalidExtendedConnect) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
ASSERT_TRUE(Initialize());
@@ -7081,7 +7080,6 @@
}
TEST_P(EndToEndTest, RejectExtendedConnect) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
// Disable extended CONNECT.
memory_cache_backend_.set_enable_extended_connect(false);
@@ -7115,7 +7113,6 @@
}
TEST_P(EndToEndTest, RejectInvalidRequestHeader) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
ASSERT_TRUE(Initialize());
@@ -7133,7 +7130,6 @@
}
TEST_P(EndToEndTest, RejectTransferEncodingResponse) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
ASSERT_TRUE(Initialize());
@@ -7154,7 +7150,6 @@
}
TEST_P(EndToEndTest, RejectUpperCaseRequest) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
ASSERT_TRUE(Initialize());
@@ -7171,7 +7166,6 @@
}
TEST_P(EndToEndTest, RejectRequestWithInvalidToken) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
ASSERT_TRUE(Initialize());
diff --git a/quiche/quic/core/http/quic_send_control_stream_test.cc b/quiche/quic/core/http/quic_send_control_stream_test.cc
index cd3a274..bf4746e 100644
--- a/quiche/quic/core/http/quic_send_control_stream_test.cc
+++ b/quiche/quic/core/http/quic_send_control_stream_test.cc
@@ -130,8 +130,7 @@
"4040" // 0x40 as the reserved frame type
"01" // 1 byte frame length
"61"); // payload "a"
- if ((!GetQuicReloadableFlag(quic_verify_request_headers_2) ||
- perspective() == Perspective::IS_CLIENT) &&
+ if (perspective() == Perspective::IS_CLIENT &&
QuicSpdySessionPeer::LocalHttpDatagramSupport(&session_) ==
HttpDatagramSupport::kDraft04) {
expected_write_data = absl::HexStringToBytes(
@@ -152,8 +151,7 @@
"01" // 1 byte frame length
"61"); // payload "a"
}
- if (GetQuicReloadableFlag(quic_verify_request_headers_2) &&
- perspective() == Perspective::IS_SERVER &&
+ if (perspective() == Perspective::IS_SERVER &&
QuicSpdySessionPeer::LocalHttpDatagramSupport(&session_) ==
HttpDatagramSupport::kNone) {
expected_write_data = absl::HexStringToBytes(
@@ -174,8 +172,7 @@
"01" // 1 byte frame length
"61"); // payload "a"
}
- if (GetQuicReloadableFlag(quic_verify_request_headers_2) &&
- perspective() == Perspective::IS_SERVER &&
+ if (perspective() == Perspective::IS_SERVER &&
QuicSpdySessionPeer::LocalHttpDatagramSupport(&session_) !=
HttpDatagramSupport::kNone) {
expected_write_data = absl::HexStringToBytes(
diff --git a/quiche/quic/core/http/quic_spdy_client_stream.cc b/quiche/quic/core/http/quic_spdy_client_stream.cc
index 1661c94..4eded5e 100644
--- a/quiche/quic/core/http/quic_spdy_client_stream.cc
+++ b/quiche/quic/core/http/quic_spdy_client_stream.cc
@@ -205,9 +205,6 @@
bool QuicSpdyClientStream::AreHeadersValid(
const QuicHeaderList& header_list) const {
- if (!GetQuicReloadableFlag(quic_verify_request_headers_2)) {
- return true;
- }
if (!QuicSpdyStream::AreHeadersValid(header_list)) {
return false;
}
diff --git a/quiche/quic/core/http/quic_spdy_client_stream_test.cc b/quiche/quic/core/http/quic_spdy_client_stream_test.cc
index d5b4137..b249a98 100644
--- a/quiche/quic/core/http/quic_spdy_client_stream_test.cc
+++ b/quiche/quic/core/http/quic_spdy_client_stream_test.cc
@@ -121,7 +121,6 @@
}
TEST_P(QuicSpdyClientStreamTest, InvalidResponseHeader) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
auto headers = AsHeaderList(std::vector<std::pair<std::string, std::string>>{
{":status", "200"}, {":path", "/foo"}});
@@ -134,7 +133,6 @@
}
TEST_P(QuicSpdyClientStreamTest, MissingStatusCode) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
auto headers = AsHeaderList(
std::vector<std::pair<std::string, std::string>>{{"key", "value"}});
diff --git a/quiche/quic/core/http/quic_spdy_server_stream_base.cc b/quiche/quic/core/http/quic_spdy_server_stream_base.cc
index 9852302..9a23c26 100644
--- a/quiche/quic/core/http/quic_spdy_server_stream_base.cc
+++ b/quiche/quic/core/http/quic_spdy_server_stream_base.cc
@@ -50,10 +50,6 @@
bool QuicSpdyServerStreamBase::AreHeadersValid(
const QuicHeaderList& header_list) const {
- if (!GetQuicReloadableFlag(quic_verify_request_headers_2)) {
- return true;
- }
- QUIC_RELOADABLE_FLAG_COUNT_N(quic_verify_request_headers_2, 2, 3);
if (!QuicSpdyStream::AreHeadersValid(header_list)) {
return false;
}
diff --git a/quiche/quic/core/http/quic_spdy_server_stream_base_test.cc b/quiche/quic/core/http/quic_spdy_server_stream_base_test.cc
index 8ebf712..1b2f486 100644
--- a/quiche/quic/core/http/quic_spdy_server_stream_base_test.cc
+++ b/quiche/quic/core/http/quic_spdy_server_stream_base_test.cc
@@ -110,8 +110,7 @@
header_list.OnHeader(":scheme", "http");
header_list.OnHeaderBlockEnd(128, 128);
stream_->OnStreamHeaderList(/*fin=*/false, 0, header_list);
- EXPECT_EQ(GetQuicReloadableFlag(quic_verify_request_headers_2) &&
- GetQuicReloadableFlag(quic_act_upon_invalid_header) &&
+ EXPECT_EQ(GetQuicReloadableFlag(quic_act_upon_invalid_header) &&
!session_.allow_extended_connect(),
stream_->rst_sent());
}
@@ -126,8 +125,7 @@
header_list.OnHeader(":scheme", "http");
header_list.OnHeaderBlockEnd(128, 128);
stream_->OnStreamHeaderList(/*fin=*/false, 0, header_list);
- EXPECT_EQ(GetQuicReloadableFlag(quic_verify_request_headers_2) &&
- GetQuicReloadableFlag(quic_act_upon_invalid_header) &&
+ EXPECT_EQ(GetQuicReloadableFlag(quic_act_upon_invalid_header) &&
!session_.allow_extended_connect(),
stream_->rst_sent());
}
@@ -136,7 +134,6 @@
if (!session_.version().UsesHttp3()) {
return;
}
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
QuicHeaderList header_list;
header_list.OnHeaderBlockStart();
@@ -166,7 +163,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidVanillaConnect) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
QuicHeaderList header_list;
header_list.OnHeaderBlockStart();
@@ -185,7 +181,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidNonConnectWithProtocol) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
QuicHeaderList header_list;
header_list.OnHeaderBlockStart();
@@ -206,7 +201,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidRequestWithoutScheme) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
// A request without :scheme should be rejected.
QuicHeaderList header_list;
@@ -226,7 +220,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidRequestWithoutAuthority) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
// A request without :authority should be rejected.
QuicHeaderList header_list;
@@ -246,7 +239,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidRequestWithoutMethod) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
// A request without :method should be rejected.
QuicHeaderList header_list;
@@ -266,7 +258,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidRequestWithoutPath) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
// A request without :path should be rejected.
QuicHeaderList header_list;
@@ -286,7 +277,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, InvalidRequestHeader) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
// A request without :path should be rejected.
QuicHeaderList header_list;
@@ -307,7 +297,6 @@
}
TEST_F(QuicSpdyServerStreamBaseTest, EmptyHeaders) {
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
spdy::Http2HeaderBlock empty_header;
quic::test::NoopQpackStreamSenderDelegate encoder_stream_sender_delegate;
diff --git a/quiche/quic/core/http/quic_spdy_session.cc b/quiche/quic/core/http/quic_spdy_session.cc
index e024213..75db1c9 100644
--- a/quiche/quic/core/http/quic_spdy_session.cc
+++ b/quiche/quic/core/http/quic_spdy_session.cc
@@ -464,7 +464,6 @@
debug_visitor_(nullptr),
destruction_indicator_(123456789),
allow_extended_connect_(
- GetQuicReloadableFlag(quic_verify_request_headers_2) &&
perspective() == Perspective::IS_SERVER &&
VersionUsesHttp3(transport_version())) {
h2_deframer_.set_visitor(spdy_framer_visitor_.get());
@@ -540,7 +539,6 @@
settings_.values[SETTINGS_WEBTRANS_DRAFT00] = 1;
}
if (allow_extended_connect()) {
- QUIC_RELOADABLE_FLAG_COUNT_N(quic_verify_request_headers_2, 1, 3);
settings_.values[SETTINGS_ENABLE_CONNECT_PROTOCOL] = 1;
}
}
@@ -1678,9 +1676,7 @@
bool QuicSpdySession::SupportsWebTransport() {
return WillNegotiateWebTransport() && SupportsH3Datagram() &&
- peer_supports_webtransport_ &&
- (!GetQuicReloadableFlag(quic_verify_request_headers_2) ||
- allow_extended_connect_);
+ peer_supports_webtransport_ && allow_extended_connect_;
}
bool QuicSpdySession::SupportsH3Datagram() const {
@@ -1841,12 +1837,10 @@
// Must not be called after Initialize().
void QuicSpdySession::set_allow_extended_connect(bool allow_extended_connect) {
QUIC_BUG_IF(extended connect wrong version,
- !GetQuicReloadableFlag(quic_verify_request_headers_2) ||
- !VersionUsesHttp3(transport_version()))
+ !VersionUsesHttp3(transport_version()))
<< "Try to enable/disable extended CONNECT in Google QUIC";
QUIC_BUG_IF(extended connect on client,
- !GetQuicReloadableFlag(quic_verify_request_headers_2) ||
- perspective() == Perspective::IS_CLIENT)
+ perspective() == Perspective::IS_CLIENT)
<< "Enabling/disabling extended CONNECT on the client side has no effect";
if (ShouldNegotiateWebTransport()) {
QUIC_BUG_IF(disable extended connect, !allow_extended_connect)
diff --git a/quiche/quic/core/http/quic_spdy_session_test.cc b/quiche/quic/core/http/quic_spdy_session_test.cc
index 966b231..86c4712 100644
--- a/quiche/quic/core/http/quic_spdy_session_test.cc
+++ b/quiche/quic/core/http/quic_spdy_session_test.cc
@@ -422,8 +422,7 @@
SupportedVersions(GetParam()))),
session_(connection_) {
if (perspective == Perspective::IS_SERVER &&
- VersionUsesHttp3(transport_version()) &&
- GetQuicReloadableFlag(quic_verify_request_headers_2)) {
+ VersionUsesHttp3(transport_version())) {
session_.set_allow_extended_connect(allow_extended_connect);
}
session_.Initialize();
@@ -3643,7 +3642,6 @@
if (!version().UsesHttp3()) {
return;
}
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
session_.set_local_http_datagram_support(HttpDatagramSupport::kDraft04);
session_.set_supports_webtransport(true);
@@ -3753,7 +3751,6 @@
if (!version().UsesHttp3()) {
return;
}
- SetQuicReloadableFlag(quic_verify_request_headers_2, true);
SetQuicReloadableFlag(quic_act_upon_invalid_header, true);
EXPECT_FALSE(session_.SupportsWebTransport());
diff --git a/quiche/quic/core/http/quic_spdy_stream.cc b/quiche/quic/core/http/quic_spdy_stream.cc
index 84f57e3..8f8a5b1 100644
--- a/quiche/quic/core/http/quic_spdy_stream.cc
+++ b/quiche/quic/core/http/quic_spdy_stream.cc
@@ -632,8 +632,7 @@
}
QUIC_CODE_COUNT_N(quic_validate_request_header, 2, 2);
- if (!GetQuicReloadableFlag(quic_verify_request_headers_2) ||
- !header_too_large) {
+ if (!header_too_large) {
MaybeProcessReceivedWebTransportHeaders();
}
@@ -1628,7 +1627,6 @@
} // namespace
bool QuicSpdyStream::AreHeadersValid(const QuicHeaderList& header_list) const {
- QUICHE_DCHECK(GetQuicReloadableFlag(quic_verify_request_headers_2));
for (const std::pair<std::string, std::string>& pair : header_list) {
const std::string& name = pair.first;
if (std::any_of(name.begin(), name.end(), isInvalidHeaderNameCharacter)) {
diff --git a/quiche/quic/core/http/quic_spdy_stream_test.cc b/quiche/quic/core/http/quic_spdy_stream_test.cc
index 2b966b2..e7d68cd 100644
--- a/quiche/quic/core/http/quic_spdy_stream_test.cc
+++ b/quiche/quic/core/http/quic_spdy_stream_test.cc
@@ -277,8 +277,7 @@
size_t headers_payload_length() const { return headers_payload_length_; }
bool AreHeadersValid(const QuicHeaderList& header_list) const override {
- return !GetQuicReloadableFlag(quic_verify_request_headers_2) ||
- QuicSpdyStream::AreHeadersValid(header_list);
+ return QuicSpdyStream::AreHeadersValid(header_list);
}
private:
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 612a6de..843414f 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -57,9 +57,7 @@
QUIC_FLAG(quic_reloadable_flag_quic_remove_connection_migration_connection_option_v2, true)
// If true, include stream information in idle timeout connection close detail.
QUIC_FLAG(quic_reloadable_flag_quic_add_stream_info_to_idle_close_detail, true)
-// If true, quic server will send ENABLE_CONNECT_PROTOCOL setting and and endpoint will validate required request/response headers and extended CONNECT mechanism and update code counts of valid/invalid headers.
-QUIC_FLAG(quic_reloadable_flag_quic_verify_request_headers_2, true)
-// If true, reject or send error response code upon receiving invalid request or response headers. This flag depends on --gfe2_reloadable_flag_quic_verify_request_headers_2.
+// If true, reject or send error response code upon receiving invalid request or response headers.
QUIC_FLAG(quic_reloadable_flag_quic_act_upon_invalid_header, false)
// If true, require handshake confirmation for QUIC connections, functionally disabling 0-rtt handshakes.
QUIC_FLAG(quic_reloadable_flag_quic_require_handshake_confirmation, false)
diff --git a/quiche/quic/test_tools/quic_test_server.cc b/quiche/quic/test_tools/quic_test_server.cc
index ad97b4a..272f237 100644
--- a/quiche/quic/test_tools/quic_test_server.cc
+++ b/quiche/quic/test_tools/quic_test_server.cc
@@ -113,8 +113,7 @@
config(), connection, this, session_helper(), crypto_config(),
compressed_certs_cache(), server_backend());
}
- if (VersionUsesHttp3(version.transport_version) &&
- GetQuicReloadableFlag(quic_verify_request_headers_2)) {
+ if (VersionUsesHttp3(version.transport_version)) {
QUICHE_DCHECK(session->allow_extended_connect());
// Do not allow extended CONNECT request if the backend doesn't support
// it.