Deprecate gfe2_reloadable_flag_quic_one_write_for_headers.
PiperOrigin-RevId: 499881049
diff --git a/quiche/quic/core/http/quic_spdy_stream.cc b/quiche/quic/core/http/quic_spdy_stream.cc
index aded5c8..839e330 100644
--- a/quiche/quic/core/http/quic_spdy_stream.cc
+++ b/quiche/quic/core/http/quic_spdy_stream.cc
@@ -1170,28 +1170,12 @@
send_buffer().stream_offset(),
send_buffer().stream_offset() + headers_frame_header.length());
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- QUIC_RELOADABLE_FLAG_COUNT(quic_one_write_for_headers);
-
- QUIC_DLOG(INFO) << ENDPOINT << "Stream " << id()
- << " is writing HEADERS frame header of length "
- << headers_frame_header.length()
- << ", and payload of length " << encoded_headers.length()
- << " with fin " << fin;
- WriteOrBufferData(absl::StrCat(headers_frame_header, encoded_headers), fin,
- /*ack_listener=*/nullptr);
- } else {
- QUIC_DLOG(INFO) << ENDPOINT << "Stream " << id()
- << " is writing HEADERS frame header of length "
- << headers_frame_header.length();
- WriteOrBufferData(headers_frame_header, /* fin = */ false,
- /* ack_listener = */ nullptr);
-
- QUIC_DLOG(INFO) << ENDPOINT << "Stream " << id()
- << " is writing HEADERS frame payload of length "
- << encoded_headers.length() << " with fin " << fin;
- WriteOrBufferData(encoded_headers, fin, nullptr);
- }
+ QUIC_DLOG(INFO) << ENDPOINT << "Stream " << id()
+ << " is writing HEADERS frame header of length "
+ << headers_frame_header.length() << ", and payload of length "
+ << encoded_headers.length() << " with fin " << fin;
+ WriteOrBufferData(absl::StrCat(headers_frame_header, encoded_headers), fin,
+ /*ack_listener=*/nullptr);
QuicSpdySession::LogHeaderCompressionRatioHistogram(
/* using_qpack = */ true,
diff --git a/quiche/quic/core/http/quic_spdy_stream_test.cc b/quiche/quic/core/http/quic_spdy_stream_test.cc
index dbc033e..1ab50a0 100644
--- a/quiche/quic/core/http/quic_spdy_stream_test.cc
+++ b/quiche/quic/core/http/quic_spdy_stream_test.cc
@@ -1491,11 +1491,7 @@
// In this case, TestStream::WriteHeadersImpl() does not prevent writes.
// Four writes on the request stream: HEADERS frame header and payload both
// for headers and trailers.
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
- } else {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(4);
- }
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
}
// Write the initial headers, without a FIN.
@@ -1521,11 +1517,7 @@
// Four writes on the request stream: HEADERS frame header and payload both
// for headers and trailers.
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
- } else {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(4);
- }
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
// No PRIORITY_UPDATE frames on the control stream,
// because the stream has default priority.
@@ -1557,12 +1549,7 @@
StrictMock<MockHttp3DebugVisitor> debug_visitor;
session_->set_debug_visitor(&debug_visitor);
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(1);
- } else {
- // Two writes on the request stream: HEADERS frame header and payload.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
- }
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(1);
EXPECT_CALL(*stream_, WriteHeadersMock(false));
EXPECT_CALL(debug_visitor, OnHeadersFrameSent(stream_->id(), _));
stream_->WriteHeaders(Http2HeaderBlock(), /*fin=*/false, nullptr);
@@ -1611,11 +1598,7 @@
// Two writes on the request stream: HEADERS frame header and payload.
// PRIORITY_UPDATE frame is not sent this time, because one is already sent.
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(1);
- } else {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
- }
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(1);
EXPECT_CALL(*stream_, WriteHeadersMock(true));
stream_->WriteHeaders(Http2HeaderBlock(), /*fin=*/true, nullptr);
}
@@ -1628,11 +1611,7 @@
if (UsesHttp3()) {
// In this case, TestStream::WriteHeadersImpl() does not prevent writes.
// HEADERS frame header and payload on the request stream.
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(1);
- } else {
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(2);
- }
+ EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _)).Times(1);
}
// Write the initial headers.
@@ -3037,34 +3016,19 @@
.Times(AnyNumber());
size_t bytes_written = 0;
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- EXPECT_CALL(*session_,
- WritevData(stream_->id(), _, /* offset = */ 0, _, _, _))
- .WillOnce(
- DoAll(SaveArg<1>(&bytes_written),
- Invoke(session_.get(), &MockQuicSpdySession::ConsumeData)));
- } else {
- // HEADERS frame header.
- EXPECT_CALL(*session_,
- WritevData(stream_->id(), _, /* offset = */ 0, _, _, _));
- // HEADERS frame payload.
- EXPECT_CALL(*session_, WritevData(stream_->id(), _, _, _, _, _))
- .WillOnce(
- DoAll(SaveArg<1>(&bytes_written),
- Invoke(session_.get(), &MockQuicSpdySession::ConsumeData)));
- }
+ EXPECT_CALL(*session_,
+ WritevData(stream_->id(), _, /* offset = */ 0, _, _, _))
+ .WillOnce(
+ DoAll(SaveArg<1>(&bytes_written),
+ Invoke(session_.get(), &MockQuicSpdySession::ConsumeData)));
Http2HeaderBlock request_headers;
request_headers["foo"] = "bar";
size_t write_headers_return_value =
stream_->WriteHeaders(std::move(request_headers), /*fin=*/true, nullptr);
EXPECT_TRUE(stream_->fin_sent());
- if (GetQuicReloadableFlag(quic_one_write_for_headers)) {
- // bytes_written includes HEADERS frame header.
- EXPECT_GT(bytes_written, write_headers_return_value);
- } else {
- EXPECT_EQ(bytes_written, write_headers_return_value);
- }
+ // bytes_written includes HEADERS frame header.
+ EXPECT_GT(bytes_written, write_headers_return_value);
}
// Regression test for https://crbug.com/1177662.
diff --git a/quiche/quic/core/quic_flags_list.h b/quiche/quic/core/quic_flags_list.h
index 0730c8d..3287bae 100644
--- a/quiche/quic/core/quic_flags_list.h
+++ b/quiche/quic/core/quic_flags_list.h
@@ -27,8 +27,6 @@
QUIC_FLAG(quic_reloadable_flag_quic_allow_client_enabled_bbr_v2, true)
// If true, an endpoint does not detect path degrading or blackholing until handshake gets confirmed.
QUIC_FLAG(quic_reloadable_flag_quic_no_path_degrading_before_handshake_confirmed, true)
-// If true, combine two WriteOrBufferData to one while writing headers.
-QUIC_FLAG(quic_reloadable_flag_quic_one_write_for_headers, true)
// If true, default-enable 5RTO blachole detection.
QUIC_FLAG(quic_reloadable_flag_quic_default_enable_5rto_blackhole_detection2, true)
// If true, delay setting of stateless reset token until session initialization.