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.