will it never end?
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6368 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
8d3455d849
commit
92b80765e6
|
@ -1485,6 +1485,7 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
|
||||||
}
|
}
|
||||||
|
|
||||||
profile = gateway_ptr->profile;
|
profile = gateway_ptr->profile;
|
||||||
|
|
||||||
if (!switch_test_flag(gateway_ptr, REG_FLAG_CALLERID)) {
|
if (!switch_test_flag(gateway_ptr, REG_FLAG_CALLERID)) {
|
||||||
tech_pvt->gateway_from_str = switch_core_session_strdup(nsession, gateway_ptr->register_from);
|
tech_pvt->gateway_from_str = switch_core_session_strdup(nsession, gateway_ptr->register_from);
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,6 +296,7 @@ struct private_object {
|
||||||
char *far_end_contact;
|
char *far_end_contact;
|
||||||
char *contact_url;
|
char *contact_url;
|
||||||
char *from_str;
|
char *from_str;
|
||||||
|
char *rpid;
|
||||||
char *gateway_from_str;
|
char *gateway_from_str;
|
||||||
char *rm_encoding;
|
char *rm_encoding;
|
||||||
char *rm_fmtp;
|
char *rm_fmtp;
|
||||||
|
|
|
@ -476,7 +476,6 @@ char *sofia_overcome_sip_uri_weakness(switch_core_session_t *session, const char
|
||||||
|
|
||||||
switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
||||||
{
|
{
|
||||||
char *rpid = NULL;
|
|
||||||
char *alert_info = NULL;
|
char *alert_info = NULL;
|
||||||
char *max_forwards = NULL;
|
char *max_forwards = NULL;
|
||||||
const char *alertbuf;
|
const char *alertbuf;
|
||||||
|
@ -539,30 +538,12 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
||||||
|
|
||||||
switch_set_flag_locked(tech_pvt, TFLAG_READY);
|
switch_set_flag_locked(tech_pvt, TFLAG_READY);
|
||||||
|
|
||||||
/* TODO: We should use the new tags for making an rpid and add profile options to turn this on/off */
|
|
||||||
if (switch_test_flag(caller_profile, SWITCH_CPF_SCREEN)) {
|
|
||||||
const char *priv = "off";
|
|
||||||
const char *screen = "no";
|
|
||||||
if (switch_test_flag(caller_profile, SWITCH_CPF_HIDE_NAME)) {
|
|
||||||
priv = "name";
|
|
||||||
if (switch_test_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER)) {
|
|
||||||
priv = "full";
|
|
||||||
}
|
|
||||||
} else if (switch_test_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER)) {
|
|
||||||
priv = "full";
|
|
||||||
}
|
|
||||||
if (switch_test_flag(caller_profile, SWITCH_CPF_SCREEN)) {
|
|
||||||
screen = "yes";
|
|
||||||
}
|
|
||||||
|
|
||||||
rpid = switch_core_session_sprintf(tech_pvt->session, "Remote-Party-ID: %s;screen=%s;privacy=%s", tech_pvt->from_str, screen, priv);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tech_pvt->nh) {
|
if (!tech_pvt->nh) {
|
||||||
char *d_url = NULL, *url = NULL;
|
char *d_url = NULL, *url = NULL;
|
||||||
sofia_private_t *sofia_private;
|
sofia_private_t *sofia_private;
|
||||||
char *invite_contact = NULL, *to_str, *use_from_str, *from_str, *url_str;
|
char *invite_contact = NULL, *to_str, *use_from_str, *from_str, *url_str;
|
||||||
const char *transport = "udp", *t_var;
|
const char *transport = "udp", *t_var;
|
||||||
|
char *rpid_domain = "cluecon.com", *p;
|
||||||
|
|
||||||
if (switch_strlen_zero(tech_pvt->dest)) {
|
if (switch_strlen_zero(tech_pvt->dest)) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "URL Error! [%s]\n", tech_pvt->dest);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "URL Error! [%s]\n", tech_pvt->dest);
|
||||||
|
@ -587,6 +568,19 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
||||||
use_from_str = tech_pvt->from_str;
|
use_from_str = tech_pvt->from_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpid_domain = switch_core_session_strdup(session, use_from_str);
|
||||||
|
sofia_glue_get_url_from_contact(rpid_domain, 0);
|
||||||
|
if ((rpid_domain = strchr(rpid_domain, '@'))) {
|
||||||
|
rpid_domain++;
|
||||||
|
if ((p = strchr(rpid_domain, ';'))) {
|
||||||
|
*p = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!rpid_domain) {
|
||||||
|
rpid_domain = "cluecon.com";
|
||||||
|
}
|
||||||
|
|
||||||
if (switch_stristr("port=tcp", url)) {
|
if (switch_stristr("port=tcp", url)) {
|
||||||
transport = "tcp";
|
transport = "tcp";
|
||||||
} else {
|
} else {
|
||||||
|
@ -616,6 +610,30 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
||||||
SIPTAG_CONTACT_STR(invite_contact),
|
SIPTAG_CONTACT_STR(invite_contact),
|
||||||
TAG_END());
|
TAG_END());
|
||||||
|
|
||||||
|
|
||||||
|
/* TODO: We should use the new tags for making an rpid and add profile options to turn this on/off */
|
||||||
|
if (switch_test_flag(caller_profile, SWITCH_CPF_SCREEN)) {
|
||||||
|
const char *priv = "off";
|
||||||
|
const char *screen = "no";
|
||||||
|
if (switch_test_flag(caller_profile, SWITCH_CPF_HIDE_NAME)) {
|
||||||
|
priv = "name";
|
||||||
|
if (switch_test_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER)) {
|
||||||
|
priv = "full";
|
||||||
|
}
|
||||||
|
} else if (switch_test_flag(caller_profile, SWITCH_CPF_HIDE_NUMBER)) {
|
||||||
|
priv = "full";
|
||||||
|
}
|
||||||
|
if (switch_test_flag(caller_profile, SWITCH_CPF_SCREEN)) {
|
||||||
|
screen = "yes";
|
||||||
|
}
|
||||||
|
|
||||||
|
tech_pvt->rpid = switch_core_session_sprintf(tech_pvt->session, "Remote-Party-ID: \"%s\"<%s@%s>;screen=%s;privacy=%s",
|
||||||
|
tech_pvt->caller_profile->caller_id_name,
|
||||||
|
tech_pvt->caller_profile->caller_id_number,
|
||||||
|
rpid_domain,
|
||||||
|
screen, priv);
|
||||||
|
}
|
||||||
|
|
||||||
switch_safe_free(d_url);
|
switch_safe_free(d_url);
|
||||||
|
|
||||||
if (!(sofia_private = malloc(sizeof(*sofia_private)))) {
|
if (!(sofia_private = malloc(sizeof(*sofia_private)))) {
|
||||||
|
@ -680,7 +698,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
||||||
|
|
||||||
nua_invite(tech_pvt->nh,
|
nua_invite(tech_pvt->nh,
|
||||||
NUTAG_SESSION_TIMER(session_timeout),
|
NUTAG_SESSION_TIMER(session_timeout),
|
||||||
TAG_IF(!switch_strlen_zero(rpid), SIPTAG_HEADER_STR(rpid)),
|
TAG_IF(!switch_strlen_zero(tech_pvt->rpid), SIPTAG_HEADER_STR(tech_pvt->rpid)),
|
||||||
TAG_IF(!switch_strlen_zero(alert_info), SIPTAG_HEADER_STR(alert_info)),
|
TAG_IF(!switch_strlen_zero(alert_info), SIPTAG_HEADER_STR(alert_info)),
|
||||||
TAG_IF(!switch_strlen_zero(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
|
TAG_IF(!switch_strlen_zero(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
|
||||||
TAG_IF(!switch_strlen_zero(max_forwards), SIPTAG_MAX_FORWARDS_STR(max_forwards)),
|
TAG_IF(!switch_strlen_zero(max_forwards), SIPTAG_MAX_FORWARDS_STR(max_forwards)),
|
||||||
|
|
Loading…
Reference in New Issue