msquic icon indicating copy to clipboard operation
msquic copied to clipboard

Paths are not removed if the peer ACK a PATH_CHALLENGE but doesn't send a PATH_RESPONSE

Open guhetier opened this issue 2 months ago • 0 comments

The PATH_CHALLENGE failure is dealt with in QuicLossDetectionRetransmitFrames, when detecting that no packet containing a PATH_CHALLENGE has been acknowledged for longer than a validation timeout. When this is the case, the path is removed from the connection path array.

However, if the packet is acknowledged but no PATH_RESPONSE is sent, there won't be a failure in MsQuic implementation, but there also won't be a further retries. The path won't be removed from the list, it will simply linger there. It is not treated as validated either and will stay throttled by its allowance.

According to RFC 9000, https://www.rfc-editor.org/rfc/rfc9000.html#section-9.3.2, an endpoint must revert to using the last validated path on path challenge failure (https://www.rfc-editor.org/rfc/rfc9000.html#section-8.2.4). Instead, we may keep using a non-validated path.

guhetier avatar Oct 08 '25 21:10 guhetier