From f5f9ddc5a128aaee7cd60e64b38778fdbe5a9038 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 1 Aug 2008 18:18:35 +0000 Subject: [PATCH] make register-proxy preserve the url composed from proxy but target the packets to desired address MODENDP-121 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9219 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 6 +++--- src/mod/endpoints/mod_sofia/sofia_reg.c | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 8c88d1ed07..6a395057f8 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -274,6 +274,7 @@ struct sofia_gateway { char *register_contact; char *register_to; char *register_proxy; + char *register_sticky_proxy; char *register_context; char *expires_str; char *register_url; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 118742d51a..7aa3673069 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -886,8 +886,8 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag) from_domain = realm; } - if (switch_strlen_zero(register_proxy)) { - register_proxy = proxy; + if (!switch_strlen_zero(register_proxy)) { + gateway->register_sticky_proxy = switch_core_strdup(gateway->pool, register_proxy); } gateway->retry_seconds = atoi(retry_seconds); @@ -914,7 +914,7 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag) params = switch_core_sprintf(gateway->pool, ";transport=%s", register_transport); } - gateway->register_url = switch_core_sprintf(gateway->pool, "sip:%s;transport=%s", register_proxy, register_transport); + gateway->register_url = switch_core_sprintf(gateway->pool, "sip:%s;transport=%s", proxy, register_transport); gateway->register_from = switch_core_sprintf(gateway->pool, "", from_user, from_domain, register_transport); sipip = profile->extsipip ? profile->extsipip : profile->sipip; diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index 767ec34afe..ca741c089e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -150,6 +150,7 @@ void sofia_reg_check_gateway(sofia_profile_t *profile, time_t now) if (now) { nua_register(gateway_ptr->nh, NUTAG_URL(gateway_ptr->register_url), + TAG_IF(gateway_ptr->register_sticky_proxy, NUTAG_PROXY(gateway_ptr->register_sticky_proxy)), SIPTAG_TO_STR(gateway_ptr->register_from), SIPTAG_FROM_STR(gateway_ptr->register_from), SIPTAG_CONTACT_STR(gateway_ptr->register_contact),