1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-07-29 03:41:11 +03:00

Separately track streams by DSR and non DSR data lost.

Summary: We need to do this to maintain consistency with the schedulers. Prior to this fix when we ran out of connection flow control and had lost DSR data the non-DSR stream scheduler would do an empty write _and_ the DSR stream scheduler would do an empty write. To fully resolve the issue we need to track the streams separately (note that the same stream can be in both sets).

Reviewed By: jbeshay

Differential Revision: D40003361

fbshipit-source-id: fd3e567bc8a2bc8b71d4c4543894053fa6e24dc4
This commit is contained in:
Matt Joras
2022-10-03 17:02:52 -07:00
committed by Facebook GitHub Bot
parent 8d38c19348
commit 03e314a3a4
7 changed files with 108 additions and 8 deletions

View File

@ -512,7 +512,7 @@ void StreamFrameScheduler::writeStreams(PacketBuilderInterface& builder) {
} // namespace quic
bool StreamFrameScheduler::hasPendingData() const {
return conn_.streamManager->hasLoss() ||
return conn_.streamManager->hasNonDSRLoss() ||
(conn_.streamManager->hasNonDSRWritable() &&
getSendConnFlowControlBytesWire(conn_) > 0);
}