fix(proxy-engine): fix inbound route browser ringing and provider-facing SDP advertisement while preventing RTP port exhaustion

This commit is contained in:
2026-04-11 18:40:56 +00:00
parent 21ffc1d017
commit 81441e7853
17 changed files with 208 additions and 469 deletions
+7 -6
View File
@@ -16,7 +16,6 @@ use sip_proto::helpers::{
};
use sip_proto::message::{RequestOptions, SipMessage};
use std::net::SocketAddr;
use std::sync::Arc;
use tokio::net::UdpSocket;
/// State of a SIP leg.
@@ -40,6 +39,9 @@ pub struct SipLegConfig {
/// SIP target endpoint (provider outbound proxy or device address).
pub sip_target: SocketAddr,
/// Provider credentials (for 407 auth).
// username is carried for parity with the provider config but digest auth
// rebuilds the username from the registered AOR, so this slot is never read.
#[allow(dead_code)]
pub username: Option<String>,
pub password: Option<String>,
pub registered_aor: Option<String>,
@@ -51,6 +53,10 @@ pub struct SipLegConfig {
/// A SIP leg with full dialog management.
pub struct SipLeg {
// Leg identity is tracked via the enclosing LegInfo's key in the call's
// leg map; SipLeg itself never reads this field back. Kept to preserve
// the (id, config) constructor shape used by the call manager.
#[allow(dead_code)]
pub id: String,
pub state: LegState,
pub config: SipLegConfig,
@@ -411,11 +417,6 @@ impl SipLeg {
dialog.terminate();
Some(msg.serialize())
}
/// Get the SIP Call-ID for routing.
pub fn sip_call_id(&self) -> Option<&str> {
self.dialog.as_ref().map(|d| d.call_id.as_str())
}
}
/// Actions produced by the SipLeg message handler.