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:
committed by
Facebook GitHub Bot
parent
246c1102c4
commit
2560e174a9
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user