New feature: call someone directly by fingerprint through the relay.
- Client connects with SNI "_signal" for persistent signaling
- RegisterPresence/RegisterPresenceAck for relay registration
- DirectCallOffer routed to target by fingerprint
- DirectCallAnswer with AcceptGeneric/AcceptTrusted/Reject modes
- Relay creates private room (call-{id}), sends CallSetup to both
- Both clients connect to private room for media (existing SFU path)
- Hangup forwarding + cleanup on disconnect
- Desktop CLI: --signal + --call <fingerprint> for testing
- CallRegistry tracks call state (Pending/Ringing/Active/Ended)
- SignalHub manages persistent signaling connections
Tested: Alice calls Bob by fingerprint, relay routes offer, Bob
auto-accepts, both join private room, media flows bidirectionally.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33 lines
913 B
Rust
33 lines
913 B
Rust
//! WarzonePhone Relay Daemon
|
|
//!
|
|
//! Integration crate that wires together all layers into a relay pipeline:
|
|
//! recv → FEC decode → jitter buffer → FEC encode → send
|
|
//!
|
|
//! The relay forwards media between two QUIC endpoints without decoding audio.
|
|
//! It operates on FEC-protected packets, managing loss recovery and adaptive
|
|
//! quality transitions.
|
|
|
|
pub mod auth;
|
|
pub mod call_registry;
|
|
pub mod config;
|
|
pub mod event_log;
|
|
pub mod federation;
|
|
pub mod signal_hub;
|
|
pub mod handshake;
|
|
pub mod metrics;
|
|
pub mod pipeline;
|
|
pub mod presence;
|
|
pub mod probe;
|
|
pub mod relay_link;
|
|
pub mod room;
|
|
pub mod route;
|
|
pub mod session_mgr;
|
|
pub mod trunk;
|
|
pub mod ws;
|
|
|
|
pub use config::RelayConfig;
|
|
pub use handshake::accept_handshake;
|
|
pub use pipeline::{PipelineConfig, PipelineStats, RelayPipeline};
|
|
pub use session_mgr::{RelaySession, SessionId, SessionInfo, SessionManager, SessionState};
|
|
pub use trunk::TrunkBatcher;
|