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

Make client keep track of originalDestinationConnectionId

Summary:
When I tested against picoquic, I found that an exception was thrown here: https://fburl.com/diffusion/qsnzingx.

The reason is that we modify `conn.initialDestinationConnectionId` in the event of a retry, so it's no longer the original destination connection id. By separately keeping track of the original destination connection id, we can solve this issue.

Reviewed By: mjoras

Differential Revision: D23722127

fbshipit-source-id: 94be08812e675feaf46f5af86e7304af84c1910c
This commit is contained in:
Aman Sharma
2020-11-06 15:40:31 -08:00
committed by Facebook GitHub Bot
parent 246c1102c4
commit 2560e174a9
4 changed files with 15 additions and 3 deletions

View File

@@ -30,6 +30,8 @@ std::unique_ptr<QuicClientConnectionState> undoAllClientStateForRetry(
newConn->clientConnectionId = conn->clientConnectionId;
newConn->initialDestinationConnectionId =
conn->initialDestinationConnectionId;
newConn->originalDestinationConnectionId =
conn->originalDestinationConnectionId;
// TODO: don't carry server connection id over to the new connection.
newConn->serverConnectionId = conn->serverConnectionId;
newConn->ackStates.initialAckState.nextPacketNum =
@@ -100,7 +102,7 @@ void processServerInitialParams(
initialSourceConnId.value() !=
conn.readCodec->getServerConnectionId() ||
originalDestinationConnId.value() !=
conn.initialDestinationConnectionId) {
conn.originalDestinationConnectionId) {
throw QuicTransportException(
"Initial CID does not match.",
TransportErrorCode::TRANSPORT_PARAMETER_ERROR);