Exclude locally_closed_streams_highest_offset_.size() in QuicSession::ShouldKeepConnectionAlive(). When the connection aliveness is consulted and the only request streams are locally closed streams whose highest byte offset hasn't arrived yet, I don't think we need to wait for those trailing bytes, keeping the connection alive. gfe-relnote: protected by gfe2_reloadable_flag_quic_aggressive_connection_aliveness.pb.cfg PiperOrigin-RevId: 262377696 Change-Id: Ie4f57173d8e7a996fd55fa3b24426ec2fc2c70dc
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc index 87208ee..baa9c85 100644 --- a/quic/core/http/quic_spdy_session.cc +++ b/quic/core/http/quic_spdy_session.cc
@@ -594,9 +594,10 @@ // True if there are open HTTP requests. bool QuicSpdySession::ShouldKeepConnectionAlive() const { - // Change to check if there are open HTTP requests. - // When IETF QUIC control and QPACK streams are used, those will need to be - // subtracted from this count to ensure only request streams are counted. + if (GetQuicReloadableFlag(quic_aggressive_connection_aliveness)) { + QUIC_RELOADABLE_FLAG_COUNT(quic_aggressive_connection_aliveness); + return GetNumActiveStreams() > 0; + } return GetNumOpenDynamicStreams() > 0; }
diff --git a/quic/core/quic_session_test.cc b/quic/core/quic_session_test.cc index 18a6808..9bb4a99 100644 --- a/quic/core/quic_session_test.cc +++ b/quic/core/quic_session_test.cc
@@ -237,7 +237,7 @@ } bool ShouldKeepConnectionAlive() const override { - return GetNumOpenDynamicStreams() > 0; + return GetNumActiveStreams() > 0; } QuicConsumedData WritevData(QuicStream* stream,
diff --git a/quic/quartc/quartc_session.cc b/quic/quartc/quartc_session.cc index f851579..a7a96ee 100644 --- a/quic/quartc/quartc_session.cc +++ b/quic/quartc/quartc_session.cc
@@ -207,7 +207,7 @@ bool QuartcSession::ShouldKeepConnectionAlive() const { // TODO(mellem): Quartc may want different keepalive logic than HTTP. - return GetNumOpenDynamicStreams() > 0; + return GetNumActiveStreams() > 0; } void QuartcSession::OnConnectionClosed(const QuicConnectionCloseFrame& frame,
diff --git a/quic/quartc/quartc_stream_test.cc b/quic/quartc/quartc_stream_test.cc index 719cca7..b689e57 100644 --- a/quic/quartc/quartc_stream_test.cc +++ b/quic/quartc/quartc_stream_test.cc
@@ -93,7 +93,7 @@ const QuicCryptoStream* GetCryptoStream() const override { return nullptr; } QuicCryptoStream* GetMutableCryptoStream() override { return nullptr; } bool ShouldKeepConnectionAlive() const override { - return GetNumOpenDynamicStreams() > 0; + return GetNumActiveStreams() > 0; } // Called by QuicStream when they want to close stream.