mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-05-03 14:56:17 +00:00
deal with some sips: contacts
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8861 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
0ca1319e1a
commit
978486d139
@ -439,6 +439,11 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
|
|||||||
const char *contact_host = contact->m_url->url_host;
|
const char *contact_host = contact->m_url->url_host;
|
||||||
char *path_encoded = NULL;
|
char *path_encoded = NULL;
|
||||||
int path_encoded_len = 0;
|
int path_encoded_len = 0;
|
||||||
|
const char *proto = "sip";
|
||||||
|
|
||||||
|
if (sip->sip_contact->m_url->url_type == url_sips) {
|
||||||
|
proto = "sips";
|
||||||
|
}
|
||||||
|
|
||||||
display = contact->m_display;
|
display = contact->m_display;
|
||||||
|
|
||||||
@ -475,11 +480,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%s>",
|
switch_snprintf(contact_str, sizeof(contact_str), "%s <%s:%s@%s%s;%s%s%s%s>",
|
||||||
display, contact->m_url->url_user, contact_host, new_port,
|
display, proto, contact->m_url->url_user, contact_host, new_port,
|
||||||
contact->m_url->url_params, received_data, is_nat ? ";fs_nat=yes" : "", path_encoded ? path_encoded : "");
|
contact->m_url->url_params, received_data, is_nat ? ";fs_nat=yes" : "", path_encoded ? path_encoded : "");
|
||||||
} else {
|
} else {
|
||||||
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,
|
switch_snprintf(contact_str, sizeof(contact_str), "%s <%s:%s@%s%s%s%s%s>", display, proto, contact->m_url->url_user, contact_host, new_port,
|
||||||
received_data, is_nat ? ";fs_nat=yes" : "", path_encoded ? path_encoded : "");
|
received_data, is_nat ? ";fs_nat=yes" : "", path_encoded ? path_encoded : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -730,6 +735,7 @@ void sofia_reg_handle_sip_i_register(nua_t *nua, sofia_profile_t *profile, nua_h
|
|||||||
sofia_regtype_t type = REG_REGISTER;
|
sofia_regtype_t type = REG_REGISTER;
|
||||||
int network_port = 0;
|
int network_port = 0;
|
||||||
char *is_nat = NULL;
|
char *is_nat = NULL;
|
||||||
|
int is_tls = 0, is_tcp = 0;
|
||||||
|
|
||||||
get_addr(network_ip, sizeof(network_ip), &((struct sockaddr_in *) my_addrinfo->ai_addr)->sin_addr);
|
get_addr(network_ip, sizeof(network_ip), &((struct sockaddr_in *) my_addrinfo->ai_addr)->sin_addr);
|
||||||
network_port = ntohs(((struct sockaddr_in *) msg_addrinfo(nua_current_request(nua))->ai_addr)->sin_port);
|
network_port = ntohs(((struct sockaddr_in *) msg_addrinfo(nua_current_request(nua))->ai_addr)->sin_port);
|
||||||
@ -746,6 +752,19 @@ void sofia_reg_handle_sip_i_register(nua_t *nua, sofia_profile_t *profile, nua_h
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (switch_stristr("transport=tls", sip->sip_contact->m_url->url_params)) {
|
||||||
|
is_tls += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sip->sip_contact->m_url->url_type == url_sips) {
|
||||||
|
is_tls += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (switch_stristr("transport=tcp", sip->sip_contact->m_url->url_params)) {
|
||||||
|
is_tcp = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_tls && !is_tcp) {
|
||||||
if ((profile->pflags & PFLAG_AGGRESSIVE_NAT_DETECTION)) {
|
if ((profile->pflags & PFLAG_AGGRESSIVE_NAT_DETECTION)) {
|
||||||
if (sip && sip->sip_via) {
|
if (sip && sip->sip_via) {
|
||||||
const char *port = sip->sip_via->v_port;
|
const char *port = sip->sip_via->v_port;
|
||||||
@ -784,6 +803,7 @@ void sofia_reg_handle_sip_i_register(nua_t *nua, sofia_profile_t *profile, nua_h
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (profile->reg_acl_count) {
|
if (profile->reg_acl_count) {
|
||||||
uint32_t x = 0;
|
uint32_t x = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user