Siavash Sameni
8fcf1be341
Mirror to GitHub / mirror (push) Failing after 23s
Build Release Binaries / build-amd64 (push) Failing after 6m8s
feat(nat): Tailscale-inspired STUN/ICE + port mapping + mid-call re-gathering (#28)
Phase 8: 5 new modules bringing NAT traversal close to Tailscale's approach.
- stun.rs: RFC 5389 STUN client — public server reflexive discovery,
XOR-MAPPED-ADDRESS parsing, parallel probe with retry, STUN fallback
in desktop try_reflect_own_addr()
- portmap.rs: NAT-PMP (RFC 6886) + PCP (RFC 6887) + UPnP IGD port
mapping — gateway discovery, acquire/release/refresh lifecycle,
new PeerCandidates.mapped candidate type in dial order
- ice_agent.rs: candidate lifecycle — gather(), re_gather(),
apply_peer_update() with monotonic generation counter,
CandidateUpdate signal message forwarded by relay
- netcheck.rs: comprehensive diagnostic — NAT type, IPv4/v6,
port mapping availability, relay latencies, CLI --netcheck
- relay_map.rs: RTT-sorted relay map, preferred() selection,
populate_from_ack() for RegisterPresenceAck.available_relays
Relay: CallRegistry stores + cross-wires caller/callee_mapped_addr
into CallSetup.peer_mapped_addr. Region config + available_relays
populated from federation peers in RegisterPresenceAck.
Desktop: place_call/answer_call call acquire_port_mapping() and
fill caller/callee_mapped_addr. STUN+relay combined NAT detection.
571 tests pass (66 new), 0 regressions, 0 warnings.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 10:17:17 +04:00
..
2026-04-06 09:21:35 +00:00
2026-04-10 15:20:21 +04:00
2026-03-28 05:30:11 +04:00
2026-04-14 10:17:17 +04:00
2026-04-10 15:20:21 +04:00
2026-04-12 17:39:59 +04:00
2026-03-28 05:30:11 +04:00
2026-03-28 08:16:57 +04:00
2026-03-27 12:45:07 +04:00
2026-03-28 13:18:50 +04:00
2026-03-29 17:36:55 +04:00
2026-04-13 16:40:56 +04:00
2026-04-12 17:39:59 +04:00
2026-04-13 11:34:01 +04:00
2026-04-08 10:00:21 +04:00
2026-04-13 11:54:37 +04:00
2026-04-13 16:40:56 +04:00
2026-04-07 18:32:24 +04:00
2026-04-12 19:38:37 +04:00
2026-04-14 10:17:17 +04:00
2026-04-14 10:17:17 +04:00
2026-04-13 16:40:56 +04:00
2026-04-13 16:40:56 +04:00
2026-04-07 21:33:05 +04:00
2026-04-07 18:32:24 +04:00
2026-04-14 10:17:17 +04:00
2026-04-13 12:35:59 +04:00
2026-04-13 12:27:26 +04:00
2026-03-28 10:29:17 +04:00
2026-03-28 05:30:11 +04:00
2026-04-10 15:20:21 +04:00
2026-03-30 14:27:52 +04:00
2026-03-28 09:14:25 +04:00