feat(fax): add fax routing, job tracking, inbox management, and T.38/UDPTL media support

This commit is contained in:
2026-04-20 20:43:42 +00:00
parent 3c010a3b1b
commit d2c18a4ebb
27 changed files with 4247 additions and 280 deletions
+25
View File
@@ -108,6 +108,24 @@ impl SipLeg {
..Default::default()
});
self.send_invite_with_sdp(from_uri, to_uri, sip_call_id, socket, sdp)
.await;
}
pub async fn send_invite_with_sdp(
&mut self,
from_uri: &str,
to_uri: &str,
sip_call_id: &str,
socket: &UdpSocket,
sdp: String,
) {
let ip = self
.config
.public_ip
.as_deref()
.unwrap_or(&self.config.lan_ip);
let invite = SipMessage::create_request(
"INVITE",
to_uri,
@@ -401,6 +419,10 @@ impl SipLeg {
return SipLegAction::Send(ok.serialize());
}
if method == "INVITE" || method == "UPDATE" {
return SipLegAction::InDialogRequest(method.to_string());
}
SipLegAction::None
}
@@ -436,6 +458,9 @@ pub enum SipLegAction {
StateChange(LegState),
/// Connected — send this ACK.
ConnectedWithAck(Vec<u8>),
/// Provider sent an in-dialog request (re-INVITE / UPDATE) that needs
/// call-manager-specific handling.
InDialogRequest(String),
/// Terminated with a reason.
Terminated(String),
/// Send 200 OK and terminate.