Summary
The QUIC machinery is fully implemented but unreachable in production:
QuicUpgradeBehaviour (431 lines, complete port of Charon's upgrade loop) is always installed, but the node hardcodes NodeType::TCP (TODO(#402 part B)), so with_quic_enabled(true) is never reached and the upgrade loop early-returns every tick.
Feature::Quic is declared, parsed, and defaulted (Alpha, matching Charon) — but never queried: feature_set.enabled(Feature::Quic) has zero call sites. --feature-set-enable=quic and run's --p2p-udp-address are silently inert.
- Charon's wiring is one conditional:
app.go#L368-L372 picks NodeTypeQUIC vs NodeTypeTCP off the featureset.
- Related dead code:
is_quic_enabled has zero call sites; quic_upgrade.rs has no test module (Charon has TestNewQUICHost plus QUIC-host test helpers).
Proposed change
- Branch
NodeType on feature_set.enabled(Feature::Quic) in wire_p2p, mirroring Charon.
- Fix the server-path
with_quic_enabled omission — covered by the transport unification (draft 15b), which should land first or together.
- Remove or use
is_quic_enabled; add QUIC tests.
Acceptance
--feature-set-enable=quic on run produces a node that listens on the configured UDP address and upgrades established TCP connections to QUIC (observable via the upgrade behaviour's logs/metrics in a two-node test).
Summary
The QUIC machinery is fully implemented but unreachable in production:
QuicUpgradeBehaviour(431 lines, complete port of Charon's upgrade loop) is always installed, but the node hardcodesNodeType::TCP(TODO(#402 part B)), sowith_quic_enabled(true)is never reached and the upgrade loop early-returns every tick.Feature::Quicis declared, parsed, and defaulted (Alpha, matching Charon) — but never queried:feature_set.enabled(Feature::Quic)has zero call sites.--feature-set-enable=quicandrun's--p2p-udp-addressare silently inert.app.go#L368-L372picksNodeTypeQUICvsNodeTypeTCPoff the featureset.is_quic_enabledhas zero call sites;quic_upgrade.rshas no test module (Charon hasTestNewQUICHostplus QUIC-host test helpers).Proposed change
NodeTypeonfeature_set.enabled(Feature::Quic)inwire_p2p, mirroring Charon.with_quic_enabledomission — covered by the transport unification (draft15b), which should land first or together.is_quic_enabled; add QUIC tests.Acceptance
--feature-set-enable=quiconrunproduces a node that listens on the configured UDP address and upgrades established TCP connections to QUIC (observable via the upgrade behaviour's logs/metrics in a two-node test).