Skip to main content

Module sip

Module sip 

Source
Expand description

Native SIP/RTP: Flowcat speaks SIP directly (no FreeSWITCH).

This module makes a flowcat-core process a SIP user agent on a trunk: REGISTER (with digest auth + periodic refresh), accept inbound INVITEs, and originate outbound INVITEs — then carry the call’s audio over hand-rolled RTP, surfaced through the same MediaTransport seam the WS/Plivo path uses. See SIP-DESIGN.md §2.

Split:

  • Signaling (agent) is delegated to rsipstack (REGISTER/INVITE/ACK/ BYE transactions + dialogs, digest auth). rsipstack re-exports the rsip message/header types as rsipstack::sip.
  • RTP (rtp) and SDP (sdp) are hand-rolled (deterministic, fully unit-tested, no extra media dep) over a plain tokio::net::UdpSocket.
  • transport::SipTransport bridges RTP ↔ decoded MediaIn::Audio for one dialog, implementing MediaTransport.

Re-exports§

pub use agent::InboundInvite;
pub use agent::SipAgent;
pub use agent::SipConfig;
pub use agent::DEFAULT_RTP_PORT_BASE;
pub use agent::DEFAULT_RTP_PORT_TRIES;
pub use rtp::depacketize;
pub use rtp::JitterBuffer;
pub use rtp::RtpPacket;
pub use rtp::RtpSender;
pub use rtp::JITTER_DEPTH;
pub use sdp::G711Codec;
pub use sdp::SdpMedia;
pub use transport::SipTransport;

Modules§

agent
SipAgent — a SIP user agent on one trunk (REGISTER + inbound/outbound calls).
rtp
Hand-rolled RTP (RFC 3550) for G.711 telephony — packetize, depacketize, and a small fixed jitter buffer.
sdp
Minimal SDP (RFC 4566) for G.711 telephony — just enough to offer/answer a single audio stream over RTP/AVP with PCMU/PCMA.
transport
SipTransport — bridges one SIP dialog’s RTP media to the MediaTransport seam.