1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-12-24 09:40:59 +03:00

make largestAckedByPeer and largestSent optional

Summary: 0 is now a valid packet number, so we should make these optional. In cases where they are needed to construct packet builder, it should be safe to use 0 as default since it's only used for computing `twiceDistance` in PacketNumber.cpp.

Reviewed By: yangchi

Differential Revision: D21948454

fbshipit-source-id: af9fdc3e28ff85f1594296c4d436f24685a0acd6
This commit is contained in:
Xiaoting Tang
2020-06-10 10:28:08 -07:00
committed by Facebook GitHub Bot
parent dc2ef325b5
commit 03e3bb6547
15 changed files with 82 additions and 70 deletions

View File

@@ -207,7 +207,7 @@ DataPathResult continuousMemoryBuildScheduleEncrypt(
*connection.bufAccessor,
connection.udpSendPacketLen,
std::move(header),
getAckState(connection, pnSpace).largestAckedByPeer);
getAckState(connection, pnSpace).largestAckedByPeer.value_or(0));
pktBuilder.setCipherOverhead(cipherOverhead);
CHECK(scheduler.hasData());
auto result =
@@ -287,7 +287,7 @@ DataPathResult iobufChainBasedBuildScheduleEncrypt(
RegularQuicPacketBuilder pktBuilder(
connection.udpSendPacketLen,
std::move(header),
getAckState(connection, pnSpace).largestAckedByPeer);
getAckState(connection, pnSpace).largestAckedByPeer.value_or(0));
// It's the scheduler's job to invoke encode header
pktBuilder.setCipherOverhead(cipherOverhead);
auto result =
@@ -605,7 +605,8 @@ void updateConnection(
}
increaseNextPacketNum(conn, packetNumberSpace);
conn.lossState.largestSent = std::max(conn.lossState.largestSent, packetNum);
conn.lossState.largestSent =
std::max(conn.lossState.largestSent.value_or(packetNum), packetNum);
// updateConnection may be called multiple times during write. If before or
// during any updateConnection, setLossDetectionAlarm is already set, we
// shouldn't clear it:
@@ -903,7 +904,7 @@ void writeCloseCommon(
RegularQuicPacketBuilder packetBuilder(
connection.udpSendPacketLen,
std::move(header),
getAckState(connection, pnSpace).largestAckedByPeer);
getAckState(connection, pnSpace).largestAckedByPeer.value_or(0));
packetBuilder.encodePacketHeader();
packetBuilder.setCipherOverhead(aead.getCipherOverhead());
size_t written = 0;