cloudflare / cloudflare/quiche

on_peer_migrated does not retire the DCID previously used on the old path

Open
#2,447 0 comments 1 reaction 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.