From 8c5586b2bc45b9aeed540321b106740b705c32c1 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 1 Apr 2011 14:22:36 -0500 Subject: [PATCH] add option for from-domain to be set to auto-aleg in gateway config --- src/mod/endpoints/mod_sofia/mod_sofia.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 4723618fa8..507dcadd8d 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -3980,6 +3980,7 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session const char *hval = NULL; char *not_const = NULL; int cid_locked = 0; + switch_channel_t *o_channel = NULL; *new_session = NULL; @@ -4008,6 +4009,11 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session nchannel = switch_core_session_get_channel(nsession); + if (session) { + o_channel = switch_core_session_get_channel(session); + } + + if ((hval = switch_event_get_header(var_event, "sip_invite_to_uri"))) { dest_to = switch_core_session_strdup(nsession, hval); } @@ -4114,7 +4120,15 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session gateway_ptr->ob_calls++; if (!zstr(gateway_ptr->from_domain) && !switch_channel_get_variable(nchannel, "sip_invite_domain")) { - switch_channel_set_variable(nchannel, "sip_invite_domain", gateway_ptr->from_domain); + if (!strcasecmp(gateway_ptr->from_domain, "auto-aleg")) { + const char *sip_from_host = switch_channel_get_variable(o_channel, "sip_from_host"); + + if (!zstr(sip_from_host)) { + switch_channel_set_variable(nchannel, "sip_invite_domain", sip_from_host); + } + } else { + switch_channel_set_variable(nchannel, "sip_invite_domain", gateway_ptr->from_domain); + } } if (!zstr(gateway_ptr->outbound_sticky_proxy) && !switch_channel_get_variable(nchannel, "sip_route_uri")) { @@ -4313,7 +4327,6 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session } if (session) { - switch_channel_t *o_channel = switch_core_session_get_channel(session); const char *vval = NULL; if ((vval = switch_channel_get_variable(o_channel, "sip_auto_answer")) && switch_true(vval)) {