mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-13 12:40:17 +00:00
more nat fix
This commit is contained in:
parent
5c8a3b12fd
commit
70f2908976
@ -8213,7 +8213,24 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
|
||||
char *sql = NULL;
|
||||
char *acl_context = NULL;
|
||||
const char *r_sdp = NULL;
|
||||
int broken_device = 0;
|
||||
int is_tcp = 0, is_tls = 0;
|
||||
const char *uparams = NULL;
|
||||
|
||||
|
||||
if (sip && sip->sip_contact && sip->sip_contact->m_url && sip->sip_contact->m_url->url_params) {
|
||||
uparams = sip->sip_contact->m_url->url_params;
|
||||
} else {
|
||||
uparams = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (uparams) {
|
||||
if (switch_stristr("transport=tcp", uparams)) {
|
||||
is_tcp = 1;
|
||||
} else if (switch_stristr("transport=tls", uparams)) {
|
||||
is_tls = 1;
|
||||
}
|
||||
}
|
||||
|
||||
profile->ib_calls++;
|
||||
|
||||
@ -8257,14 +8274,13 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
|
||||
}
|
||||
|
||||
|
||||
if (!switch_check_network_list_ip(network_ip, profile->local_network) &&
|
||||
profile->server_rport_level >= 2 && sip->sip_user_agent && sip->sip_user_agent->g_string &&
|
||||
(!strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7) ||
|
||||
!strncasecmp(sip->sip_user_agent->g_string, "KIRK Wireless Server", 20) )) {
|
||||
broken_device = 1;
|
||||
}
|
||||
|
||||
if (sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION) || broken_device) {
|
||||
if (sofia_test_pflag(profile, PFLAG_AGGRESSIVE_NAT_DETECTION) ||
|
||||
(sofia_test_pflag(profile, PFLAG_TLS_ALWAYS_NAT) && (is_tcp || is_tls)) ||
|
||||
(!is_tcp && !is_tls && (zstr(network_ip) || !switch_check_network_list_ip(network_ip, profile->local_network)) &&
|
||||
profile->server_rport_level >= 2 && sip->sip_user_agent &&
|
||||
sip->sip_user_agent->g_string &&
|
||||
(!strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7) || !strncasecmp(sip->sip_user_agent->g_string, "KIRK Wireless Server", 20)))
|
||||
) {
|
||||
if (sip && sip->sip_via) {
|
||||
const char *port = sip->sip_via->v_port;
|
||||
const char *host = sip->sip_via->v_host;
|
||||
|
@ -1469,7 +1469,8 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
|
||||
to_user = force_user;
|
||||
}
|
||||
|
||||
if (profile->server_rport_level >= 2 && sip->sip_user_agent &&
|
||||
if (!is_tcp && !is_tls && (zstr(network_ip) || !switch_check_network_list_ip(network_ip, profile->local_network)) &&
|
||||
profile->server_rport_level >= 2 && sip->sip_user_agent &&
|
||||
sip->sip_user_agent->g_string &&
|
||||
( !strncasecmp(sip->sip_user_agent->g_string, "Polycom", 7) || !strncasecmp(sip->sip_user_agent->g_string, "KIRK Wireless Server", 20) )) {
|
||||
if (sip && sip->sip_via) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user