}
if (switch_channel_test_flag(channel, CF_ANSWERED) || sofia_test_flag(tech_pvt, TFLAG_ANS)) {
- const char *call_info = switch_channel_get_variable(channel, "presence_call_info");
+ const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
+
if (!tech_pvt->got_bye) {
switch_channel_set_variable(channel, "sip_hangup_disposition", "send_bye");
}
const char *b_sdp = NULL;
int is_proxy = 0;
char *sticky = NULL;
- const char *call_info = switch_channel_get_variable(channel, "presence_call_info");
+ const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
if (sofia_test_flag(tech_pvt, TFLAG_ANS) || switch_channel_test_flag(channel, CF_OUTBOUND)) {
return SWITCH_STATUS_SUCCESS;
/* Send the 200 OK */
if (!sofia_test_flag(tech_pvt, TFLAG_BYE)) {
char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_RESPONSE_HEADER_PREFIX);
-
if (sofia_use_soa(tech_pvt)) {
nua_respond(tech_pvt->nh, SIP_200_OK,
SIPTAG_CONTACT_STR(tech_pvt->profile->url),
if (sofia_use_soa(tech_pvt)) {
nua_respond(tech_pvt->nh, SIP_200_OK,
NUTAG_AUTOANSWER(0),
+ TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)),
TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)),
SIPTAG_HEADER_STR(generate_pai_str(session)),
NUTAG_SESSION_TIMER(session_timeout),
nua_respond(tech_pvt->nh, SIP_200_OK,
NUTAG_AUTOANSWER(0),
NUTAG_MEDIA_ENABLE(0),
+ TAG_IF(call_info, SIPTAG_CALL_INFO_STR(call_info)),
TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)),
SIPTAG_HEADER_STR(generate_pai_str(session)),
NUTAG_SESSION_TIMER(session_timeout),
if (!switch_channel_test_flag(channel, CF_RING_READY) && !sofia_test_flag(tech_pvt, TFLAG_BYE) &&
!switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED)) {
char *extra_header = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX);
- const char *call_info = switch_channel_get_variable(channel, "presence_call_info");
+ const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
nua_respond(tech_pvt->nh, SIP_180_RINGING,
SIPTAG_CONTACT_STR(tech_pvt->reply_contact),
{
char *sticky = NULL;
const char *val = NULL;
- const char *call_info = switch_channel_get_variable(channel, "presence_call_info");
+ const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
if (sofia_test_pflag(tech_pvt->profile, PFLAG_3PCC_PROXY) && sofia_test_flag(tech_pvt, TFLAG_3PCC)) {
sofia_set_flag_locked(tech_pvt, TFLAG_EARLY_MEDIA);
phrase = "OK";
sofia_set_flag_locked(tech_pvt, TFLAG_BYE);
- call_info = switch_channel_get_variable(channel, "presence_call_info");
+ call_info = switch_channel_get_variable(channel, "presence_call_info_full");
if (sip->sip_reason && sip->sip_reason->re_protocol &&
(!strcasecmp(sip->sip_reason->re_protocol, "Q.850")
if (channel && sip->sip_call_info) {
char *p;
call_info = sip_header_as_string(nua_handle_home(nh), (void *) sip->sip_call_info);
- if ((p = strchr(call_info, ';'))) {
- switch_channel_set_variable(channel, "presence_call_info", p+1);
+ if (!switch_stristr("appearance", call_info)) {
+ switch_channel_set_variable(channel, "presence_call_info_full", call_info);
+ if ((p = strchr(call_info, ';'))) {
+ switch_channel_set_variable(channel, "presence_call_info", p+1);
+ }
}
} else if ((status == 180 || status == 183 || status == 200)) {
char buf[128] = "";
if (channel && sip->sip_call_info) {
char *p;
if ((call_info = sip_header_as_string(nua_handle_home(nh), (void *) sip->sip_call_info))) {
- if ((p = strchr(call_info, ';'))) {
- switch_channel_set_variable(channel, "presence_call_info", p+1);
+ if (!switch_stristr("appearance", call_info)) {
+ switch_channel_set_variable(channel, "presence_call_info_full", call_info);
+ if ((p = strchr(call_info, ';'))) {
+ switch_channel_set_variable(channel, "presence_call_info", p+1);
+ }
}
su_free(nua_handle_home(nh), call_info);
}
if ((uuid = switch_channel_get_variable(b_channel, SWITCH_SIGNAL_BOND_VARIABLE))) {
switch_channel_set_variable(b_channel, "presence_call_info", NULL);
+ switch_channel_set_variable(b_channel, "presence_call_info_full", NULL);
one_leg = 0;
} else {
uuid = switch_core_session_get_uuid(b_session);
full_contact = sip_header_as_string(nua_handle_home(tech_pvt->nh), (void *) sip->sip_contact);
}
- if (call_info_str) {
+ if (call_info_str && !switch_stristr("appearance", call_info_str)) {
+ switch_channel_set_variable(channel, "presence_call_info_full", call_info_str);
if ((p = strchr(call_info_str, ';'))) {
p++;
switch_channel_set_variable(channel, "presence_call_info", p);