Skip to content

Wire the QUIC transport feature #619

Description

@emlautarom1

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions