gfe-relnote: In QUIC, remove QuicStream::set_fin_received while move QuicStream::set_fin_sent to protected (renamed to SetFinSent and this should only be used by Google QUIC). No functional change expected, not protected. PiperOrigin-RevId: 306913013 Change-Id: I4d962f3f7527511f424a0a7767fdea009b8f9766
diff --git a/quic/core/http/quic_spdy_server_stream_base_test.cc b/quic/core/http/quic_spdy_server_stream_base_test.cc index 1a8eef2..b3cc147 100644 --- a/quic/core/http/quic_spdy_server_stream_base_test.cc +++ b/quic/core/http/quic_spdy_server_stream_base_test.cc
@@ -7,6 +7,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_ptr_util.h" #include "net/third_party/quiche/src/quic/platform/api/quic_test.h" #include "net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h" +#include "net/third_party/quiche/src/quic/test_tools/quic_stream_peer.h" #include "net/third_party/quiche/src/quic/test_tools/quic_test_utils.h" using testing::_; @@ -50,7 +51,7 @@ SendQuicRstStreamNoErrorWithEarlyResponse) { stream_->StopReading(); EXPECT_CALL(session_, SendRstStream(_, QUIC_STREAM_NO_ERROR, _)).Times(1); - stream_->set_fin_sent(true); + QuicStreamPeer::SetFinSent(stream_); stream_->CloseWriteSide(); }
diff --git a/quic/core/http/quic_spdy_stream.cc b/quic/core/http/quic_spdy_stream.cc index 06962b0..fd7248b 100644 --- a/quic/core/http/quic_spdy_stream.cc +++ b/quic/core/http/quic_spdy_stream.cc
@@ -283,7 +283,7 @@ // set and write side needs to be closed without actually sending a FIN on // this stream. // TODO(rch): Add test to ensure fin_sent_ is set whenever a fin is sent. - set_fin_sent(true); + SetFinSent(); CloseWriteSide(); } return bytes_written; @@ -350,7 +350,7 @@ // If trailers are sent on the headers stream, then |fin_sent_| needs to be // set without actually sending a FIN on this stream. if (!VersionUsesHttp3(transport_version())) { - set_fin_sent(kFin); + SetFinSent(); // Also, write side of this stream needs to be closed. However, only do // this if there is no more buffered data, otherwise it will never be sent.
diff --git a/quic/core/quic_stream.cc b/quic/core/quic_stream.cc index 86beaef..3b2484d 100644 --- a/quic/core/quic_stream.cc +++ b/quic/core/quic_stream.cc
@@ -361,10 +361,10 @@ : type), perspective_(session->perspective()) { if (type_ == WRITE_UNIDIRECTIONAL) { - set_fin_received(true); + fin_received_ = true; CloseReadSide(); } else if (type_ == READ_UNIDIRECTIONAL) { - set_fin_sent(true); + fin_sent_ = true; CloseWriteSide(); } if (type_ != CRYPTO) { @@ -560,6 +560,11 @@ CloseReadSide(); } +void QuicStream::SetFinSent() { + DCHECK(!VersionUsesHttp3(transport_version())); + fin_sent_ = true; +} + void QuicStream::Reset(QuicRstStreamErrorCode error) { stream_error_ = error; // Sending a RstStream results in calling CloseStream.
diff --git a/quic/core/quic_stream.h b/quic/core/quic_stream.h index aa2e11d..bf12149 100644 --- a/quic/core/quic_stream.h +++ b/quic/core/quic_stream.h
@@ -224,8 +224,6 @@ size_t busy_counter() const { return busy_counter_; } void set_busy_counter(size_t busy_counter) { busy_counter_ = busy_counter; } - void set_fin_sent(bool fin_sent) { fin_sent_ = fin_sent; } - void set_fin_received(bool fin_received) { fin_received_ = fin_received; } void set_rst_sent(bool rst_sent) { rst_sent_ = rst_sent; } void set_rst_received(bool rst_received) { rst_received_ = rst_received; } @@ -403,6 +401,10 @@ // this virtual so that subclasses can implement their own logics. virtual void OnDeadlinePassed(); + // Called to set fin_sent_. This is only used by Google QUIC while body is + // empty. + void SetFinSent(); + StreamDelegateInterface* stream_delegate() { return stream_delegate_; } bool fin_buffered() const { return fin_buffered_; }
diff --git a/quic/test_tools/quic_stream_peer.cc b/quic/test_tools/quic_stream_peer.cc index 4296198..50eec57 100644 --- a/quic/test_tools/quic_stream_peer.cc +++ b/quic/test_tools/quic_stream_peer.cc
@@ -58,5 +58,15 @@ return stream->send_buffer_; } +// static +void QuicStreamPeer::SetFinReceived(QuicStream* stream) { + stream->fin_received_ = true; +} + +// static +void QuicStreamPeer::SetFinSent(QuicStream* stream) { + stream->fin_sent_ = true; +} + } // namespace test } // namespace quic
diff --git a/quic/test_tools/quic_stream_peer.h b/quic/test_tools/quic_stream_peer.h index f4b1de3..e57825f 100644 --- a/quic/test_tools/quic_stream_peer.h +++ b/quic/test_tools/quic_stream_peer.h
@@ -32,6 +32,8 @@ static QuicStreamSequencer* sequencer(QuicStream* stream); static QuicSession* session(QuicStream* stream); + static void SetFinReceived(QuicStream* stream); + static void SetFinSent(QuicStream* stream); static QuicStreamSendBuffer& SendBuffer(QuicStream* stream); };
diff --git a/quic/tools/quic_simple_server_stream_test.cc b/quic/tools/quic_simple_server_stream_test.cc index 06e8866..8c45942 100644 --- a/quic/tools/quic_simple_server_stream_test.cc +++ b/quic/tools/quic_simple_server_stream_test.cc
@@ -322,7 +322,7 @@ EXPECT_FALSE(stream_->fin_received()); EXPECT_FALSE(stream_->rst_received()); - stream_->set_fin_sent(true); + QuicStreamPeer::SetFinSent(stream_); stream_->CloseWriteSide(); EXPECT_CALL(session_, SendRstStream(_, QUIC_STREAM_NO_ERROR, _)).Times(1); @@ -383,7 +383,7 @@ memory_cache_backend_.AddResponse("www.google.com", "/bar", std::move(response_headers_), body); - stream_->set_fin_received(true); + QuicStreamPeer::SetFinReceived(stream_); InSequence s; EXPECT_CALL(*stream_, WriteHeadersMock(false)); @@ -416,7 +416,7 @@ memory_cache_backend_.AddResponse("www.google.com", "/bar", std::move(response_headers_), body); - stream_->set_fin_received(true); + QuicStreamPeer::SetFinReceived(stream_); InSequence s; EXPECT_CALL(*stream_, WriteHeadersMock(false)); @@ -476,7 +476,7 @@ memory_cache_backend_.AddResponse("www.google.com", "/bar", std::move(response_headers_), body); - stream_->set_fin_received(true); + QuicStreamPeer::SetFinReceived(stream_); InSequence s; EXPECT_CALL(*stream_, WriteHeadersMock(false)); @@ -514,7 +514,7 @@ (*request_headers)[":authority"] = host; (*request_headers)[":method"] = "GET"; - stream_->set_fin_received(true); + QuicStreamPeer::SetFinReceived(stream_); InSequence s; EXPECT_CALL(session_, PromisePushResourcesMock( host + request_path, _, @@ -592,7 +592,7 @@ TEST_P(QuicSimpleServerStreamTest, TestSendErrorResponse) { EXPECT_CALL(session_, SendRstStream(_, QUIC_STREAM_NO_ERROR, _)).Times(0); - stream_->set_fin_received(true); + QuicStreamPeer::SetFinReceived(stream_); InSequence s; EXPECT_CALL(*stream_, WriteHeadersMock(false));