diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 7be0b5925c..380d10d087 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -1055,7 +1055,8 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session) NUTAG_URL(url_str), SIPTAG_TO_STR(to_str), SIPTAG_FROM_STR(from_str), SIPTAG_CONTACT_STR(invite_contact), TAG_END()); - if (strstr(tech_pvt->dest, ";nat") || ((val = switch_channel_get_variable(channel, "sip_sticky_contact")) && switch_true(val))) { + if (strstr(tech_pvt->dest, ";nat") || strstr(tech_pvt->dest, ";received") + || ((val = switch_channel_get_variable(channel, "sip_sticky_contact")) && switch_true(val))) { switch_set_flag(tech_pvt, TFLAG_NAT); tech_pvt->record_route = switch_core_session_strdup(tech_pvt->session, url_str); sticky = tech_pvt->record_route; diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index fcacb44fee..08ab7b152d 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -463,11 +463,11 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand } if (contact->m_url->url_params) { - switch_snprintf(contact_str, sizeof(contact_str), "%s %s%s", - display, contact->m_url->url_user, contact_host, new_port, contact->m_url->url_params, received_data, is_nat ? ";nat" : ""); + switch_snprintf(contact_str, sizeof(contact_str), "%s ", + display, contact->m_url->url_user, contact_host, new_port, contact->m_url->url_params, received_data, is_nat ? ";nat=yes" : ""); } else { - switch_snprintf(contact_str, sizeof(contact_str), "%s %s%s", display, contact->m_url->url_user, contact_host, new_port, - received_data, is_nat ? ";nat" : ""); + switch_snprintf(contact_str, sizeof(contact_str), "%s ", display, contact->m_url->url_user, contact_host, new_port, + received_data, is_nat ? ";nat=yes" : ""); } } @@ -517,10 +517,10 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand if (!strcasecmp(v_contact_str, "nat-connectile-dysfunction") || !strcasecmp(v_contact_str, "NDLB-connectile-dysfunction") || !strcasecmp(v_contact_str, "NDLB-tls-connectile-dysfunction")) { if (contact->m_url->url_params) { - switch_snprintf(contact_str, sizeof(contact_str), "%s %s;nat", + switch_snprintf(contact_str, sizeof(contact_str), "%s ", display, contact->m_url->url_user, network_ip, network_port, contact->m_url->url_params, received_data); } else { - switch_snprintf(contact_str, sizeof(contact_str), "%s %s;nat", display, contact->m_url->url_user, network_ip, + switch_snprintf(contact_str, sizeof(contact_str), "%s ", display, contact->m_url->url_user, network_ip, network_port, received_data); } if (strstr(v_contact_str, "tls")) {