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.