FS-6890 #comment please test
This commit is contained in:
parent
4eb5b38848
commit
a4971693d3
|
@ -1559,16 +1559,51 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
||||||
if (ok) {
|
if (ok) {
|
||||||
char *headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_INFO_HEADER_PREFIX);
|
char *headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_INFO_HEADER_PREFIX);
|
||||||
const char *pl = NULL;
|
const char *pl = NULL;
|
||||||
|
uint32_t callsequence;
|
||||||
|
nua_handle_t *nh;
|
||||||
|
sip_cseq_t *cseq = NULL;
|
||||||
|
const char *uri = NULL;
|
||||||
|
char *to, *from;
|
||||||
|
char *contact;
|
||||||
|
const char *invite_contact_params = switch_channel_get_variable(tech_pvt->channel, "sip_invite_contact_params");
|
||||||
|
|
||||||
if (!zstr(msg->string_array_arg[2])) {
|
if (!zstr(msg->string_array_arg[2])) {
|
||||||
pl = msg->string_array_arg[2];
|
pl = msg->string_array_arg[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
nua_info(tech_pvt->nh,
|
uri = switch_core_session_sprintf(tech_pvt->session, "sip:%s",
|
||||||
|
switch_channel_get_variable_dup(tech_pvt->channel, "sip_contact_uri", SWITCH_FALSE, -1));
|
||||||
|
|
||||||
|
if (tech_pvt->invite_contact) {
|
||||||
|
contact = sofia_overcome_sip_uri_weakness(tech_pvt->session,
|
||||||
|
tech_pvt->invite_contact, tech_pvt->transport, SWITCH_FALSE, invite_contact_params, NULL);
|
||||||
|
} else {
|
||||||
|
contact = tech_pvt->reply_contact;
|
||||||
|
}
|
||||||
|
|
||||||
|
callsequence = sofia_presence_get_cseq(tech_pvt->profile);
|
||||||
|
nh = nua_handle(tech_pvt->profile->nua, NULL,
|
||||||
|
NUTAG_URL(uri),
|
||||||
|
TAG_IF(contact, SIPTAG_CONTACT_STR(contact)),
|
||||||
|
TAG_END());
|
||||||
|
|
||||||
|
|
||||||
|
cseq = sip_cseq_create(nh->nh_home, callsequence, SIP_METHOD_NOTIFY);
|
||||||
|
nua_handle_bind(nh, &mod_sofia_globals.destroy_private);
|
||||||
|
|
||||||
|
from = (char *)switch_channel_get_variable(tech_pvt->channel, "sip_full_to");
|
||||||
|
to = (char *)switch_channel_get_variable(tech_pvt->channel, "sip_full_from");
|
||||||
|
|
||||||
|
nua_info(nh,
|
||||||
|
TAG_IF(!zstr(tech_pvt->route_uri), NUTAG_PROXY(tech_pvt->route_uri)),
|
||||||
|
TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)),
|
||||||
|
SIPTAG_FROM_STR(from),
|
||||||
|
SIPTAG_TO_STR(to),
|
||||||
|
SIPTAG_CALL_ID_STR(switch_channel_get_variable(tech_pvt->channel, "sip_call_id")),
|
||||||
SIPTAG_CONTENT_TYPE_STR(ct),
|
SIPTAG_CONTENT_TYPE_STR(ct),
|
||||||
TAG_IF(!zstr(headers), SIPTAG_HEADER_STR(headers)),
|
TAG_IF(!zstr(headers), SIPTAG_HEADER_STR(headers)),
|
||||||
TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)),
|
|
||||||
TAG_IF(pl, SIPTAG_PAYLOAD_STR(pl)),
|
TAG_IF(pl, SIPTAG_PAYLOAD_STR(pl)),
|
||||||
|
SIPTAG_CSEQ(cseq),
|
||||||
TAG_END());
|
TAG_END());
|
||||||
|
|
||||||
switch_safe_free(headers);
|
switch_safe_free(headers);
|
||||||
|
|
Loading…
Reference in New Issue