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),