Move cansendstreamdata() from quicconnection to quicsession. no functional change, not flag protected.
PiperOrigin-RevId: 312172952
Change-Id: I1bcff4cf48ca8f0e895e99ea76e90bfa911e0e62
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc
index 033495f..32ada39 100644
--- a/quic/core/quic_session.cc
+++ b/quic/core/quic_session.cc
@@ -619,7 +619,7 @@
ConnectionCloseBehavior::SILENT_CLOSE);
return;
}
- if (!connection_->CanWriteStreamData()) {
+ if (!CanWriteStreamData()) {
return;
}
currently_writing_stream_id_ = write_blocked_streams_.PopFront();
@@ -2279,6 +2279,18 @@
return QuicUtils::GenerateStatelessResetToken(connection_->connection_id());
}
+bool QuicSession::CanWriteStreamData() const {
+ // Don't write stream data if there are queued data packets.
+ if (connection_->HasQueuedPackets()) {
+ return false;
+ }
+ // Immediately write handshake data.
+ if (HasPendingHandshake()) {
+ return true;
+ }
+ return connection_->CanWrite(HAS_RETRANSMITTABLE_DATA);
+}
+
bool QuicSession::RetransmitLostData() {
QuicConnection::ScopedPacketFlusher retransmission_flusher(connection_);
// Retransmit crypto data first.
@@ -2311,7 +2323,7 @@
}
}
while (!streams_with_pending_retransmission_.empty()) {
- if (!connection_->CanWriteStreamData()) {
+ if (!CanWriteStreamData()) {
break;
}
// Retransmit lost data on headers and data streams.