cloudflare / cloudflare/quiche
on_peer_migrated does not retire the DCID previously used on the old path
- Dominant language
- Rust
- Stars
- 11.8k
- Forks
- 1.1k
- Avg merge
- 21h 9m
- Merged PRs (30d)
- 6
Description
## Summary
When the server observes peer migration (a non-probing packet from a new address), quiche switches the new active path to a fresh DCID from the pool, but it never marks the DCID that was active on the *previous* path for retirement. Unless the peer later advances `retire_prior_to` in a `NEW_CONNECTION_ID` frame, or the application explicitly calls `Connection::retire_dcid()`, no `RETIRE_CONNECTION_ID` frame is ever sent for that stale DCID.
## Expected behavior
[RFC 9000 §5.1.2](https://www.rfc-editor.org/rfc/rfc9000.html#section-5.1.2) states:
> Endpoints SHOULD retire connection IDs when they are no longer actively using either the local or destination address for which the connection ID was used.
After a successful peer migration, the DCID previously used on the old path is no longer associated with an actively used destination address, so it should be retired via `RETIRE_CONNECTION_ID`.
Contributor guide
Assessment
This issue has not been assessed yet.