Deprecate --gfe2_reloadable_flag_reset_content_length_status_when_removing_content_length_header. PiperOrigin-RevId: 883194410
diff --git a/quiche/balsa/balsa_headers.cc b/quiche/balsa/balsa_headers.cc index dcb3aa2..fae19d3 100644 --- a/quiche/balsa/balsa_headers.cc +++ b/quiche/balsa/balsa_headers.cc
@@ -325,12 +325,6 @@ // header we're removing is one of those headers. void BalsaHeaders::MaybeClearSpecialHeaderValues(absl::string_view key) { if (absl::EqualsIgnoreCase(key, kContentLength)) { - if (transfer_encoding_is_chunked_ && - !GetQuicheReloadableFlag( - reset_content_length_status_when_removing_content_length_header)) { - return; - } - content_length_status_ = BalsaHeadersEnums::NO_CONTENT_LENGTH; content_length_ = 0; return;
diff --git a/quiche/balsa/balsa_headers_test.cc b/quiche/balsa/balsa_headers_test.cc index f67a078..75e43f1 100644 --- a/quiche/balsa/balsa_headers_test.cc +++ b/quiche/balsa/balsa_headers_test.cc
@@ -3170,24 +3170,7 @@ EXPECT_FALSE(headers.transfer_encoding_is_chunked()); } -class BalsaHeadersClearContentLengthTest : public QuicheTestWithParam<bool> { - public: - BalsaHeadersClearContentLengthTest() - : flag_reset_content_length_status_when_removing_content_length_header_( - GetParam()) { - SetQuicheReloadableFlag( - reset_content_length_status_when_removing_content_length_header, - flag_reset_content_length_status_when_removing_content_length_header_); - } - - protected: - bool flag_reset_content_length_status_when_removing_content_length_header_; -}; - -INSTANTIATE_TEST_SUITE_P(BalsaHeadersClearContentLengthTest, - BalsaHeadersClearContentLengthTest, testing::Bool()); - -TEST_P(BalsaHeadersClearContentLengthTest, ClearContentLength) { +TEST(BalsaHeaders, ClearContentLength) { // Test that ClearContentLength() removes the content-length header and // resets content_length_status(). BalsaHeaders headers; @@ -3235,20 +3218,13 @@ EXPECT_EQ("chunked", headers.GetAllOfHeaderAsString("Transfer-Encoding")); EXPECT_TRUE(headers.transfer_encoding_is_chunked()); EXPECT_FALSE(headers.HasHeader("Content-length")); - if (flag_reset_content_length_status_when_removing_content_length_header_) { - EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_FALSE(headers.content_length_valid()); - EXPECT_EQ(0u, headers.content_length()); - } else { - EXPECT_EQ(BalsaHeadersEnums::VALID_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_TRUE(headers.content_length_valid()); - EXPECT_EQ(10u, headers.content_length()); - } + EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, + headers.content_length_status()); + EXPECT_FALSE(headers.content_length_valid()); + EXPECT_EQ(0u, headers.content_length()); } -TEST_P(BalsaHeadersClearContentLengthTest, ClearContentLengthByRemoveHeader) { +TEST(BalsaHeaders, ClearContentLengthByRemoveHeader) { // Test that calling Remove() methods to clear the content-length header // correctly resets internal content length fields. BalsaHeaders headers; @@ -3279,8 +3255,7 @@ // Test that calling Remove() methods to clear the content-length header // correctly resets internal content length fields when the Transfer-Encoding // header is present. -TEST_P(BalsaHeadersClearContentLengthTest, - ClearContentLengthByRemoveHeaderWithTransferEncodingHeader) { +TEST(BalsaHeaders, ClearContentLengthByRemoveHeaderWithTransferEncodingHeader) { BalsaHeaders headers; headers.SetContentLength(10); // We cannot use SetTransferEncodingToChunkedAndClearContentLength() here @@ -3288,17 +3263,10 @@ headers.ReplaceOrAppendHeader("Transfer-Encoding", "chunked"); BalsaHeadersTestPeer::set_transfer_encoding_is_chunked(&headers, true); headers.RemoveAllOfHeader("Content-Length"); - if (flag_reset_content_length_status_when_removing_content_length_header_) { - EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_EQ(0u, headers.content_length()); - EXPECT_FALSE(headers.content_length_valid()); - } else { - EXPECT_EQ(BalsaHeadersEnums::VALID_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_EQ(10u, headers.content_length()); - EXPECT_TRUE(headers.content_length_valid()); - } + EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, + headers.content_length_status()); + EXPECT_EQ(0u, headers.content_length()); + EXPECT_FALSE(headers.content_length_valid()); headers.SetContentLength(11); headers.ReplaceOrAppendHeader("Transfer-Encoding", "chunked"); @@ -3306,37 +3274,23 @@ std::vector<absl::string_view> headers_to_remove; headers_to_remove.emplace_back("Content-Length"); headers.RemoveAllOfHeaderInList(headers_to_remove); - if (flag_reset_content_length_status_when_removing_content_length_header_) { - EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_EQ(0u, headers.content_length()); - EXPECT_FALSE(headers.content_length_valid()); - } else { - EXPECT_EQ(BalsaHeadersEnums::VALID_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_EQ(11u, headers.content_length()); - EXPECT_TRUE(headers.content_length_valid()); - } + EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, + headers.content_length_status()); + EXPECT_EQ(0u, headers.content_length()); + EXPECT_FALSE(headers.content_length_valid()); headers.SetContentLength(12); headers.ReplaceOrAppendHeader("Transfer-Encoding", "chunked"); BalsaHeadersTestPeer::set_transfer_encoding_is_chunked(&headers, true); headers.RemoveAllHeadersWithPrefix("Content"); - if (flag_reset_content_length_status_when_removing_content_length_header_) { - EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_EQ(0u, headers.content_length()); - EXPECT_FALSE(headers.content_length_valid()); - } else { - EXPECT_EQ(BalsaHeadersEnums::VALID_CONTENT_LENGTH, - headers.content_length_status()); - EXPECT_EQ(12u, headers.content_length()); - EXPECT_TRUE(headers.content_length_valid()); - } + EXPECT_EQ(BalsaHeadersEnums::NO_CONTENT_LENGTH, + headers.content_length_status()); + EXPECT_EQ(0u, headers.content_length()); + EXPECT_FALSE(headers.content_length_valid()); } // Chunk-encoding an identity-coded BalsaHeaders removes the identity-coding. -TEST_P(BalsaHeadersClearContentLengthTest, IdentityCodingToChunked) { +TEST(BalsaHeaders, IdentityCodingToChunked) { std::string message = "HTTP/1.1 200 OK\r\n" "Transfer-Encoding: identity\r\n\r\n"; @@ -3360,7 +3314,7 @@ ElementsAre("chunked")); } -TEST_P(BalsaHeadersClearContentLengthTest, SwitchContentLengthToChunk) { +TEST(BalsaHeaders, SwitchContentLengthToChunk) { // Test that a header originally with content length header is correctly // switched to using chunk encoding. BalsaHeaders headers; @@ -3379,7 +3333,7 @@ EXPECT_FALSE(headers.content_length_valid()); } -TEST_P(BalsaHeadersClearContentLengthTest, SwitchChunkedToContentLength) { +TEST(BalsaHeaders, SwitchChunkedToContentLength) { // Test that a header originally with chunk encoding is correctly // switched to using content length. BalsaHeaders headers;
diff --git a/quiche/common/quiche_feature_flags_list.h b/quiche/common/quiche_feature_flags_list.h index 62149f3..66751cf 100755 --- a/quiche/common/quiche_feature_flags_list.h +++ b/quiche/common/quiche_feature_flags_list.h
@@ -69,7 +69,6 @@ QUICHE_FLAG(bool, quiche_reloadable_flag_quic_use_inlining_send_buffer_everywhere, true, true, "Use QuicStreamSendBufferInlining consistently everywhere in the codebase.") QUICHE_FLAG(bool, quiche_reloadable_flag_quic_use_proof_source_get_cert_chains, true, true, "When true, quic::TlsServerHandshaker will use ProofSource::GetCertChains() instead of ProofSource::GetCertChain()") QUICHE_FLAG(bool, quiche_reloadable_flag_quic_use_received_client_addresses_cache, true, true, "If true, use a LRU cache to record client addresses of packets received on server's original address.") -QUICHE_FLAG(bool, quiche_reloadable_flag_reset_content_length_status_when_removing_content_length_header, true, true, "If true, the content_length_status field in balsa_headers will always be reset when the Content-Length header is removed, no matter if the Transfer-Encoding header is chuncked or not.") QUICHE_FLAG(bool, quiche_restart_flag_quic_dispatcher_close_connection_on_invalid_ack, false, false, "An invalid ack is an ack that the peer sent for a packet that was not sent by the dispatcher. If true, the dispatcher will close the connection if it receives an invalid ack.") QUICHE_FLAG(bool, quiche_restart_flag_quic_shed_tls_handshake_config, false, false, "If true, QUIC connections will call SSL_set_shed_handshake_config to drop BoringSSL handshake state after the handshake finishes in order to save memory.") QUICHE_FLAG(bool, quiche_restart_flag_quic_stop_parsing_legacy_version_info, true, true, "If true, disable parsing the legacy version information transport parameter.")