mirror of
https://github.com/facebookincubator/mvfst.git
synced 2025-08-05 11:21:09 +03:00
Fix ack writes scheduling
Summary: There is a bug in how we decide if we should schedule a write loop due to sending Acks. Currently if one PN space has needsToWriteAckImmediately to true and another PN space has hasAcksToSchedule to true, but no PN space actually has both to true, we will still schdeule a write loop. But that's wrong. We won't be able to send anything in that case. This diff fixes that. Reviewed By: JunqiWang Differential Revision: D15446413 fbshipit-source-id: b7e49332dd7ac7f78fc3ea28f83dc49ccc758bb0
This commit is contained in:
committed by
Facebook Github Bot
parent
0691325a37
commit
482366c63a
@@ -1382,6 +1382,19 @@ TEST_F(QuicTransportFunctionsTest, HasAckDataToWrite) {
|
||||
EXPECT_TRUE(hasAckDataToWrite(*conn));
|
||||
}
|
||||
|
||||
TEST_F(QuicTransportFunctionsTest, HasAckDataToWriteMismatch) {
|
||||
// When one ack space has needsToSendAckImmediately = true and another has
|
||||
// hasAckToSchedule = true, but no ack space has both of them to true, we
|
||||
// should not send.
|
||||
auto conn = createConn();
|
||||
EXPECT_FALSE(hasAckDataToWrite(*conn));
|
||||
conn->ackStates.initialAckState.needsToSendAckImmediately = true;
|
||||
EXPECT_FALSE(hasAckDataToWrite(*conn));
|
||||
conn->ackStates.handshakeAckState.acks.insert(0, 10);
|
||||
conn->handshakeWriteCipher = test::createNoOpAead();
|
||||
EXPECT_FALSE(hasAckDataToWrite(*conn));
|
||||
}
|
||||
|
||||
TEST_F(QuicTransportFunctionsTest, HasCryptoDataToWrite) {
|
||||
auto conn = createConn();
|
||||
conn->cryptoState->initialStream.lossBuffer.emplace_back(
|
||||
|
Reference in New Issue
Block a user