Do not send stream type twice in QPACK streams. gfe-relnote: v99 only, not protected. PiperOrigin-RevId: 264201849 Change-Id: I77ae60d2e3d2de6456bfceed1a2d3242ba9420d4
diff --git a/quic/core/qpack/qpack_send_stream.cc b/quic/core/qpack/qpack_send_stream.cc index fe25f26..b978985 100644 --- a/quic/core/qpack/qpack_send_stream.cc +++ b/quic/core/qpack/qpack_send_stream.cc
@@ -25,6 +25,11 @@ void QpackSendStream::WriteStreamData(QuicStringPiece data) { QuicConnection::ScopedPacketFlusher flusher(session()->connection()); + SendStreamType(); + WriteOrBufferData(data, false, nullptr); +} + +void QpackSendStream::SendStreamType() { if (!stream_type_sent_) { char type[sizeof(http3_stream_type_)]; QuicDataWriter writer(QUIC_ARRAYSIZE(type), type); @@ -33,16 +38,6 @@ nullptr); stream_type_sent_ = true; } - WriteOrBufferData(data, false, nullptr); -} - -void QpackSendStream::SendStreamType() { - char type[sizeof(http3_stream_type_)]; - QuicDataWriter writer(QUIC_ARRAYSIZE(type), type); - writer.WriteVarInt62(http3_stream_type_); - WriteOrBufferData(QuicStringPiece(writer.data(), writer.length()), false, - nullptr); - stream_type_sent_ = true; } } // namespace quic
diff --git a/quic/core/qpack/qpack_send_stream_test.cc b/quic/core/qpack/qpack_send_stream_test.cc index 9eb6471..5f82024 100644 --- a/quic/core/qpack/qpack_send_stream_test.cc +++ b/quic/core/qpack/qpack_send_stream_test.cc
@@ -95,6 +95,8 @@ EXPECT_CALL(session_, WritevData(_, _, data.length(), _, _)); qpack_send_stream_->WriteStreamData(QuicStringPiece(data)); + EXPECT_CALL(session_, WritevData(_, _, _, _, _)).Times(0); + qpack_send_stream_->SendStreamType(); } TEST_P(QpackSendStreamTest, ResetQpackStream) {