mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-16 16:58:35 +00:00
FS-8415 #resolve [support early with 180 using early_use_180=true]
This commit is contained in:
parent
a6cbe9034d
commit
7c3aed290d
@ -2162,11 +2162,19 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
|||||||
const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
|
const char *call_info = switch_channel_get_variable(channel, "presence_call_info_full");
|
||||||
const char *b_sdp = NULL;
|
const char *b_sdp = NULL;
|
||||||
int is_proxy = 0, is_3pcc = 0;
|
int is_proxy = 0, is_3pcc = 0;
|
||||||
|
int send_sip_code = 183;
|
||||||
|
const char * p_send_sip_msg = sip_183_Session_progress;
|
||||||
|
|
||||||
b_sdp = switch_channel_get_variable(channel, SWITCH_B_SDP_VARIABLE);
|
b_sdp = switch_channel_get_variable(channel, SWITCH_B_SDP_VARIABLE);
|
||||||
is_proxy = (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA));
|
is_proxy = (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA));
|
||||||
is_3pcc = (sofia_test_pflag(tech_pvt->profile, PFLAG_3PCC_PROXY) && sofia_test_flag(tech_pvt, TFLAG_3PCC));
|
is_3pcc = (sofia_test_pflag(tech_pvt->profile, PFLAG_3PCC_PROXY) && sofia_test_flag(tech_pvt, TFLAG_3PCC));
|
||||||
|
|
||||||
|
// send 180 instead of 183 if variable "early_use_180" is "true"
|
||||||
|
if (switch_true(switch_channel_get_variable(channel, "early_use_180"))) {
|
||||||
|
send_sip_code = 180;
|
||||||
|
p_send_sip_msg = sip_180_Ringing;
|
||||||
|
}
|
||||||
|
|
||||||
if (b_sdp && is_proxy && !is_3pcc) {
|
if (b_sdp && is_proxy && !is_3pcc) {
|
||||||
switch_core_media_set_local_sdp(session, b_sdp, SWITCH_TRUE);
|
switch_core_media_set_local_sdp(session, b_sdp, SWITCH_TRUE);
|
||||||
|
|
||||||
@ -2205,7 +2213,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
|||||||
char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX);
|
char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_PROGRESS_HEADER_PREFIX);
|
||||||
if (sofia_use_soa(tech_pvt)) {
|
if (sofia_use_soa(tech_pvt)) {
|
||||||
|
|
||||||
nua_respond(tech_pvt->nh, SIP_183_SESSION_PROGRESS,
|
nua_respond(tech_pvt->nh, send_sip_code, p_send_sip_msg,
|
||||||
TAG_IF(is_proxy, NUTAG_AUTOANSWER(0)),
|
TAG_IF(is_proxy, NUTAG_AUTOANSWER(0)),
|
||||||
SIPTAG_CONTACT_STR(tech_pvt->profile->url),
|
SIPTAG_CONTACT_STR(tech_pvt->profile->url),
|
||||||
SOATAG_USER_SDP_STR(tech_pvt->mparams.local_sdp_str),
|
SOATAG_USER_SDP_STR(tech_pvt->mparams.local_sdp_str),
|
||||||
@ -2217,7 +2225,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
|||||||
TAG_IF(switch_stristr("update_display", tech_pvt->x_freeswitch_support_remote),
|
TAG_IF(switch_stristr("update_display", tech_pvt->x_freeswitch_support_remote),
|
||||||
SIPTAG_HEADER_STR("X-FS-Support: " FREESWITCH_SUPPORT)), TAG_END());
|
SIPTAG_HEADER_STR("X-FS-Support: " FREESWITCH_SUPPORT)), TAG_END());
|
||||||
} else {
|
} else {
|
||||||
nua_respond(tech_pvt->nh, SIP_183_SESSION_PROGRESS,
|
nua_respond(tech_pvt->nh, send_sip_code, p_send_sip_msg,
|
||||||
NUTAG_MEDIA_ENABLE(0),
|
NUTAG_MEDIA_ENABLE(0),
|
||||||
SIPTAG_CONTACT_STR(tech_pvt->profile->url),
|
SIPTAG_CONTACT_STR(tech_pvt->profile->url),
|
||||||
TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
|
TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)),
|
||||||
@ -2341,7 +2349,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
|||||||
|
|
||||||
if (sofia_use_soa(tech_pvt)) {
|
if (sofia_use_soa(tech_pvt)) {
|
||||||
nua_respond(tech_pvt->nh,
|
nua_respond(tech_pvt->nh,
|
||||||
SIP_183_SESSION_PROGRESS,
|
send_sip_code, p_send_sip_msg,
|
||||||
NUTAG_AUTOANSWER(0),
|
NUTAG_AUTOANSWER(0),
|
||||||
TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)),
|
TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)),
|
||||||
TAG_IF(cid, SIPTAG_HEADER_STR(cid)),
|
TAG_IF(cid, SIPTAG_HEADER_STR(cid)),
|
||||||
@ -2356,7 +2364,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
|
|||||||
SIPTAG_HEADER_STR("X-FS-Support: " FREESWITCH_SUPPORT)), TAG_END());
|
SIPTAG_HEADER_STR("X-FS-Support: " FREESWITCH_SUPPORT)), TAG_END());
|
||||||
} else {
|
} else {
|
||||||
nua_respond(tech_pvt->nh,
|
nua_respond(tech_pvt->nh,
|
||||||
SIP_183_SESSION_PROGRESS,
|
send_sip_code, p_send_sip_msg,
|
||||||
NUTAG_AUTOANSWER(0),
|
NUTAG_AUTOANSWER(0),
|
||||||
NUTAG_MEDIA_ENABLE(0),
|
NUTAG_MEDIA_ENABLE(0),
|
||||||
TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)),
|
TAG_IF(sticky, NUTAG_PROXY(tech_pvt->record_route)),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user