fix nat issue re: sofia_contact func
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8713 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
f7e74f2073
commit
2ad910acc0
|
@ -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());
|
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);
|
switch_set_flag(tech_pvt, TFLAG_NAT);
|
||||||
tech_pvt->record_route = switch_core_session_strdup(tech_pvt->session, url_str);
|
tech_pvt->record_route = switch_core_session_strdup(tech_pvt->session, url_str);
|
||||||
sticky = tech_pvt->record_route;
|
sticky = tech_pvt->record_route;
|
||||||
|
|
|
@ -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) {
|
if (contact->m_url->url_params) {
|
||||||
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s%s;%s>%s%s",
|
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s%s;%s%s%s>",
|
||||||
display, contact->m_url->url_user, contact_host, new_port, contact->m_url->url_params, received_data, is_nat ? ";nat" : "");
|
display, contact->m_url->url_user, contact_host, new_port, contact->m_url->url_params, received_data, is_nat ? ";nat=yes" : "");
|
||||||
} else {
|
} else {
|
||||||
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s%s>%s%s", display, contact->m_url->url_user, contact_host, new_port,
|
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s%s%s%s>", display, contact->m_url->url_user, contact_host, new_port,
|
||||||
received_data, is_nat ? ";nat" : "");
|
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") ||
|
if (!strcasecmp(v_contact_str, "nat-connectile-dysfunction") ||
|
||||||
!strcasecmp(v_contact_str, "NDLB-connectile-dysfunction") || !strcasecmp(v_contact_str, "NDLB-tls-connectile-dysfunction")) {
|
!strcasecmp(v_contact_str, "NDLB-connectile-dysfunction") || !strcasecmp(v_contact_str, "NDLB-tls-connectile-dysfunction")) {
|
||||||
if (contact->m_url->url_params) {
|
if (contact->m_url->url_params) {
|
||||||
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s:%d;%s>%s;nat",
|
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s:%d;%s%s;nat=yes>",
|
||||||
display, contact->m_url->url_user, network_ip, network_port, contact->m_url->url_params, received_data);
|
display, contact->m_url->url_user, network_ip, network_port, contact->m_url->url_params, received_data);
|
||||||
} else {
|
} else {
|
||||||
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s:%d>%s;nat", display, contact->m_url->url_user, network_ip,
|
switch_snprintf(contact_str, sizeof(contact_str), "%s <sip:%s@%s:%d%s;nat=yes>", display, contact->m_url->url_user, network_ip,
|
||||||
network_port, received_data);
|
network_port, received_data);
|
||||||
}
|
}
|
||||||
if (strstr(v_contact_str, "tls")) {
|
if (strstr(v_contact_str, "tls")) {
|
||||||
|
|
Loading…
Reference in New Issue