feat(proxy-engine): upgrade the internal audio bus to 48kHz f32 with per-leg denoising and improve SIP leg routing
This commit is contained in:
@@ -120,7 +120,19 @@ impl CallManager {
|
||||
}
|
||||
|
||||
// Passthrough-style routing for inbound/outbound device↔provider calls.
|
||||
self.route_passthrough_message(&call_id, &leg_id, msg, from_addr, socket, config)
|
||||
// The sip_index only stores one leg for shared Call-IDs, so we need to
|
||||
// determine which leg the message actually belongs to by comparing from_addr.
|
||||
let actual_leg_id = self
|
||||
.calls
|
||||
.get(&call_id)
|
||||
.and_then(|call| {
|
||||
call.legs
|
||||
.values()
|
||||
.find(|l| l.signaling_addr == Some(from_addr))
|
||||
.map(|l| l.id.clone())
|
||||
})
|
||||
.unwrap_or(leg_id);
|
||||
self.route_passthrough_message(&call_id, &actual_leg_id, msg, from_addr, socket, config)
|
||||
.await
|
||||
}
|
||||
|
||||
@@ -866,11 +878,18 @@ impl CallManager {
|
||||
let lan_port = config.proxy.lan_port;
|
||||
let device_sip_call_id = invite.call_id().to_string();
|
||||
|
||||
// Extract just the user part from the request URI (e.g., "sip:16196000@10.0.0.1" → "16196000").
|
||||
// extract_uri is for header values with angle brackets, not bare request URIs.
|
||||
let dialed_number = invite
|
||||
.request_uri()
|
||||
.and_then(|uri| SipMessage::extract_uri(uri))
|
||||
.unwrap_or(invite.request_uri().unwrap_or(""))
|
||||
.to_string();
|
||||
.map(|uri| {
|
||||
let stripped = uri
|
||||
.strip_prefix("sip:")
|
||||
.or_else(|| uri.strip_prefix("sips:"))
|
||||
.unwrap_or(uri);
|
||||
stripped.split('@').next().unwrap_or(stripped).to_string()
|
||||
})
|
||||
.unwrap_or_default();
|
||||
|
||||
let provider_dest: SocketAddr = match provider_config.outbound_proxy.to_socket_addr() {
|
||||
Some(a) => a,
|
||||
|
||||
Reference in New Issue
Block a user