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:
Anthony Minessale 2007-11-21 00:56:41 +00:00
parent 8d3455d849
commit 92b80765e6
3 changed files with 41 additions and 21 deletions

View File

@ -1485,6 +1485,7 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
}
profile = gateway_ptr->profile;
if (!switch_test_flag(gateway_ptr, REG_FLAG_CALLERID)) {
tech_pvt->gateway_from_str = switch_core_session_strdup(nsession, gateway_ptr->register_from);
}

View File

@ -296,6 +296,7 @@ struct private_object {
char *far_end_contact;
char *contact_url;
char *from_str;
char *rpid;
char *gateway_from_str;
char *rm_encoding;
char *rm_fmtp;

View File

@ -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)
{
char *rpid = NULL;
char *alert_info = NULL;
char *max_forwards = NULL;
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);
/* 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) {
char *d_url = NULL, *url = NULL;
sofia_private_t *sofia_private;
char *invite_contact = NULL, *to_str, *use_from_str, *from_str, *url_str;
const char *transport = "udp", *t_var;
char *rpid_domain = "cluecon.com", *p;
if (switch_strlen_zero(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;
}
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)) {
transport = "tcp";
} else {
@ -616,6 +610,30 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
SIPTAG_CONTACT_STR(invite_contact),
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);
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,
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(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
TAG_IF(!switch_strlen_zero(max_forwards), SIPTAG_MAX_FORWARDS_STR(max_forwards)),