profile->bindurl = profile->url;
}
+ profile->tcp_contact = switch_core_sprintf(profile->pool, "%s;transport=tcp", profile->url);
+ profile->tls_contact = switch_core_sprintf(profile->pool, "%s;transport=tls", profile->url);
+
+
if (profile->bind_params) {
char *bindurl = profile->bindurl;
profile->bindurl = switch_core_sprintf(profile->pool, "%s;%s", bindurl, profile->bind_params);
}
-
+
/*
* handle TLS params #2
*/
if (status < 200) {
char *sticky = NULL;
-
+ char *contact_str = profile->url;
+
if (is_nat) {
char params[128] = "";
if (contact->m_url->url_params) {
network_port,
params);
}
+
+ if (switch_stristr("port=tcp", contact->m_url->url_params)) {
+ contact_str = profile->tcp_contact;
+ } else if (switch_stristr("port=tls", contact->m_url->url_params)) {
+ contact_str = profile->tls_contact;
+ }
+
- nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS(nua), SIPTAG_SUBSCRIPTION_STATE_STR(sstr), TAG_IF(sticky, NUTAG_PROXY(sticky)),
- TAG_END());
+ nua_respond(nh, SIP_202_ACCEPTED, SIPTAG_CONTACT_STR(contact_str), NUTAG_WITH_THIS(nua), SIPTAG_SUBSCRIPTION_STATE_STR(sstr),
+ TAG_IF(sticky, NUTAG_PROXY(sticky)), TAG_END());
switch_safe_free(sticky);