mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-15 16:39:14 +00:00
FS-6890 #comment please test
This commit is contained in:
parent
cf1424cfe5
commit
f66f2cae8c
@ -1591,9 +1591,14 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
|||||||
cseq = sip_cseq_create(nh->nh_home, callsequence, SIP_METHOD_NOTIFY);
|
cseq = sip_cseq_create(nh->nh_home, callsequence, SIP_METHOD_NOTIFY);
|
||||||
nua_handle_bind(nh, &mod_sofia_globals.destroy_private);
|
nua_handle_bind(nh, &mod_sofia_globals.destroy_private);
|
||||||
|
|
||||||
from = (char *)switch_channel_get_variable(tech_pvt->channel, "sip_full_to");
|
if (tech_pvt->sent_last_invite || !tech_pvt->recv_invites) {
|
||||||
to = (char *)switch_channel_get_variable(tech_pvt->channel, "sip_full_from");
|
from = (char *)switch_channel_get_variable(tech_pvt->channel, "sip_full_from");
|
||||||
|
to = (char *)switch_channel_get_variable(tech_pvt->channel, "sip_full_to");
|
||||||
|
} else {
|
||||||
|
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,
|
nua_info(nh,
|
||||||
TAG_IF(!zstr(tech_pvt->route_uri), NUTAG_PROXY(tech_pvt->route_uri)),
|
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)),
|
TAG_IF(!zstr(tech_pvt->user_via), SIPTAG_VIA_STR(tech_pvt->user_via)),
|
||||||
|
@ -810,6 +810,8 @@ struct private_object {
|
|||||||
time_t last_vid_info;
|
time_t last_vid_info;
|
||||||
uint32_t keepalive;
|
uint32_t keepalive;
|
||||||
uint32_t sent_invites;
|
uint32_t sent_invites;
|
||||||
|
uint32_t recv_invites;
|
||||||
|
uint8_t sent_last_invite;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -6688,6 +6688,8 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
|
|||||||
case nua_callstate_authenticating:
|
case nua_callstate_authenticating:
|
||||||
break;
|
break;
|
||||||
case nua_callstate_calling:
|
case nua_callstate_calling:
|
||||||
|
tech_pvt->sent_last_invite = 1;
|
||||||
|
tech_pvt->sent_invites++;
|
||||||
break;
|
break;
|
||||||
case nua_callstate_proceeding:
|
case nua_callstate_proceeding:
|
||||||
|
|
||||||
@ -6826,6 +6828,8 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
|
|||||||
}
|
}
|
||||||
goto done;
|
goto done;
|
||||||
case nua_callstate_received:
|
case nua_callstate_received:
|
||||||
|
tech_pvt->recv_invites++;
|
||||||
|
tech_pvt->sent_last_invite = 0;
|
||||||
if (!sofia_test_flag(tech_pvt, TFLAG_SDP)) {
|
if (!sofia_test_flag(tech_pvt, TFLAG_SDP)) {
|
||||||
if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) {
|
if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) {
|
||||||
private_object_t *other_tech_pvt = switch_core_session_get_private(other_session);
|
private_object_t *other_tech_pvt = switch_core_session_get_private(other_session);
|
||||||
|
@ -1233,7 +1233,7 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
|
|||||||
switch_channel_get_name(tech_pvt->channel), switch_version_full_human(),
|
switch_channel_get_name(tech_pvt->channel), switch_version_full_human(),
|
||||||
tech_pvt->mparams.local_sdp_str ? tech_pvt->mparams.local_sdp_str : "NO SDP PRESENT\n");
|
tech_pvt->mparams.local_sdp_str ? tech_pvt->mparams.local_sdp_str : "NO SDP PRESENT\n");
|
||||||
|
|
||||||
tech_pvt->sent_invites++;
|
|
||||||
|
|
||||||
if (sofia_use_soa(tech_pvt)) {
|
if (sofia_use_soa(tech_pvt)) {
|
||||||
nua_invite(tech_pvt->nh,
|
nua_invite(tech_pvt->nh,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user