Skip to content

Commit

Permalink
Fix Original Destination CID Query (#3992)
Browse files Browse the repository at this point in the history
  • Loading branch information
nibanks committed Dec 7, 2023
1 parent d40e8bc commit 8159270
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
4 changes: 0 additions & 4 deletions src/core/connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -2427,8 +2427,6 @@ QuicConnGenerateLocalTransportParameters(
LocalTP->OriginalDestinationConnectionID,
Connection->OrigDestCID->Data,
Connection->OrigDestCID->Length);
CXPLAT_FREE(Connection->OrigDestCID, QUIC_POOL_CID);
Connection->OrigDestCID = NULL;

if (Connection->State.HandshakeUsedRetryPacket) {
CXPLAT_DBG_ASSERT(SourceCid->Link.Next != NULL);
Expand Down Expand Up @@ -2648,8 +2646,6 @@ QuicConnValidateTransportParameterCIDs(
"Original destination CID from TP doesn't match");
return FALSE;
}
CXPLAT_FREE(Connection->OrigDestCID, QUIC_POOL_CID);
Connection->OrigDestCID = NULL;
if (Connection->State.HandshakeUsedRetryPacket) {
if (!(Connection->PeerTransportParams.Flags & QUIC_TP_FLAG_RETRY_SOURCE_CONNECTION_ID)) {
QuicTraceEvent(
Expand Down
7 changes: 7 additions & 0 deletions src/test/lib/HandshakeTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,13 @@ QuicTestConnect(
ClientSecrets.ServerTrafficSecret0,
ServerSecrets.SecretLength));

uint8_t ClientOrigCid[32], ServerOrigCid[32];
uint32_t ClientOrigCidLen, ServerOrigCidLen;
TEST_QUIC_SUCCEEDED(Client.GetOrigDestCid(ClientOrigCid, ClientOrigCidLen));
TEST_QUIC_SUCCEEDED(Server->GetOrigDestCid(ServerOrigCid, ServerOrigCidLen));
TEST_EQUAL(ClientOrigCidLen, ServerOrigCidLen);
TEST_TRUE(!memcmp(ClientOrigCid, ServerOrigCid, ClientOrigCidLen));

if (ClientUsesOldVersion) {
TEST_EQUAL(Server->GetQuicVersion(), OLD_SUPPORTED_VERSION);
} else {
Expand Down
15 changes: 15 additions & 0 deletions src/test/lib/TestConnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,21 @@ TestConnection::SetRemoteAddr(
&remoteAddr.SockAddr);
}

QUIC_STATUS
TestConnection::GetOrigDestCid(
_Out_ uint8_t Bytes[32],
_Out_ uint32_t& Length
)
{
Length = sizeof(uint8_t[32]);
return
MsQuic->GetParam(
QuicConnection,
QUIC_PARAM_CONN_ORIG_DEST_CID,
&Length,
Bytes);
}

QUIC_SETTINGS
TestConnection::GetSettings() const
{
Expand Down
2 changes: 2 additions & 0 deletions src/test/lib/TestConnection.h
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ class TestConnection
QUIC_STATUS GetRemoteAddr(_Out_ QuicAddr &remoteAddr);
QUIC_STATUS SetRemoteAddr(_In_ const QuicAddr &remoteAddr);

QUIC_STATUS GetOrigDestCid(_Out_ uint8_t Bytes[32], _Out_ uint32_t& Length);

bool GetEcnEnabled();
QUIC_STATUS SetEcnEnabled(bool value);

Expand Down

0 comments on commit 8159270

Please sign in to comment.