mirror of
https://github.com/signalwire/freeswitch.git
synced 2026-10-15 15:54:13 +00:00
Merge pull request #1491 in FS/freeswitch from ~HUNYI/freeswitch:feature/FS-8900-improve-record_follow_transfer to master
* commit '069da397f5b9e7adb10c2c9d8d03f83d195dae37': Improve recording transfer
This commit is contained in:
commit
a4db3a4355
8 files changed
+19
-67
No files matched your search
@@ -2976,7 +2976,7 @@ SWITCH_STANDARD_API(transfer_function)
|
||||
tsession = other_session;
|
||||
other_session = NULL;
|
||||
if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(tmp, tsession);
|
||||
switch_ivr_transfer_recordings(tmp, tsession);
|
||||
}
|
||||
switch_core_session_rwunlock(tmp);
|
||||
}
|
||||
|
||||
@@ -866,12 +866,12 @@ static switch_status_t channel_write_frame(switch_core_session_t *session, switc
|
||||
|
||||
if (br_a) {
|
||||
ch_a = switch_core_session_get_channel(br_a);
|
||||
switch_core_media_bug_transfer_recordings(session, br_a);
|
||||
switch_ivr_transfer_recordings(session, br_a);
|
||||
}
|
||||
|
||||
if (br_b) {
|
||||
ch_b = switch_core_session_get_channel(br_b);
|
||||
switch_core_media_bug_transfer_recordings(tech_pvt->other_session, br_b);
|
||||
switch_ivr_transfer_recordings(tech_pvt->other_session, br_b);
|
||||
}
|
||||
|
||||
if (ch_a && ch_b && switch_channel_test_flag(ch_a, CF_BRIDGED) && switch_channel_test_flag(ch_b, CF_BRIDGED)) {
|
||||
|
||||
@@ -6748,7 +6748,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
|
||||
p_contact->m_url->url_user, sip_redirect_dialplan, sip_redirect_context);
|
||||
|
||||
if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(session, a_session);
|
||||
switch_ivr_transfer_recordings(session, a_session);
|
||||
}
|
||||
|
||||
switch_ivr_session_transfer(a_session, p_contact->m_url->url_user, sip_redirect_dialplan, sip_redirect_context);
|
||||
@@ -6765,7 +6765,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
|
||||
p_contact->m_url->url_user);
|
||||
|
||||
if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(session, a_session);
|
||||
switch_ivr_transfer_recordings(session, a_session);
|
||||
}
|
||||
|
||||
switch_ivr_session_transfer(a_session, p_contact->m_url->url_user, NULL, NULL);
|
||||
@@ -7740,7 +7740,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
|
||||
|
||||
if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer")) &&
|
||||
(tmp = switch_core_session_locate(br_a))) {
|
||||
switch_core_media_bug_transfer_recordings(session, tmp);
|
||||
switch_ivr_transfer_recordings(session, tmp);
|
||||
switch_core_session_rwunlock(tmp);
|
||||
}
|
||||
|
||||
@@ -8545,7 +8545,7 @@ void *SWITCH_THREAD_FUNC nightmare_xfer_thread_run(switch_thread_t *thread, void
|
||||
if (switch_channel_up(channel_a)) {
|
||||
|
||||
if (switch_true(switch_channel_get_variable(channel_a, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(session, a_session);
|
||||
switch_ivr_transfer_recordings(session, a_session);
|
||||
}
|
||||
|
||||
|
||||
@@ -8933,12 +8933,12 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t
|
||||
switch_ivr_session_transfer(a_session, "park", "inline", NULL);
|
||||
}
|
||||
if (switch_true(switch_channel_get_variable(channel_a, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(session, a_session);
|
||||
switch_ivr_transfer_recordings(session, a_session);
|
||||
}
|
||||
if (switch_true(switch_channel_get_variable(channel_b, "recording_follow_transfer")) && (tmpsess = switch_core_session_locate(br_a))) {
|
||||
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE,
|
||||
"Early transfer detected with no media, moving recording bug to other leg\n");
|
||||
switch_core_media_bug_transfer_recordings(b_session, tmpsess);
|
||||
switch_ivr_transfer_recordings(b_session, tmpsess);
|
||||
switch_core_session_rwunlock(tmpsess);
|
||||
}
|
||||
|
||||
@@ -8999,14 +8999,14 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t
|
||||
if (switch_true(switch_channel_get_variable(channel_a, "recording_follow_transfer")) &&
|
||||
(tmp = switch_core_session_locate(br_a))) {
|
||||
switch_channel_set_variable(switch_core_session_get_channel(tmp), "transfer_disposition", "bridge");
|
||||
switch_core_media_bug_transfer_recordings(session, tmp);
|
||||
switch_ivr_transfer_recordings(session, tmp);
|
||||
switch_core_session_rwunlock(tmp);
|
||||
}
|
||||
|
||||
|
||||
if (switch_true(switch_channel_get_variable(channel_b, "recording_follow_transfer")) &&
|
||||
(tmp = switch_core_session_locate(br_b))) {
|
||||
switch_core_media_bug_transfer_recordings(b_session, tmp);
|
||||
switch_ivr_transfer_recordings(b_session, tmp);
|
||||
switch_core_session_rwunlock(tmp);
|
||||
}
|
||||
|
||||
@@ -9095,7 +9095,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t
|
||||
|
||||
|
||||
if (switch_true(switch_channel_get_variable(hup_channel, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(hup_session, t_session);
|
||||
switch_ivr_transfer_recordings(hup_session, t_session);
|
||||
}
|
||||
|
||||
if(sofia_test_pflag(profile, PFLAG_FIRE_TRANFER_EVENTS)) {
|
||||
@@ -9350,7 +9350,7 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t
|
||||
}
|
||||
|
||||
if (switch_true(switch_channel_get_variable(channel, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(session, b_session);
|
||||
switch_ivr_transfer_recordings(session, b_session);
|
||||
}
|
||||
|
||||
switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "BLIND_TRANSFER");
|
||||
|
||||
@@ -3064,14 +3064,14 @@ static switch_bool_t attended_transfer(switch_core_session_t *session, switch_co
|
||||
if (switch_true(switch_channel_get_variable(tech_pvt->channel, "recording_follow_transfer")) &&
|
||||
(tmp = switch_core_session_locate(br_a))) {
|
||||
switch_channel_set_variable(switch_core_session_get_channel(tmp), "transfer_disposition", "bridge");
|
||||
switch_core_media_bug_transfer_recordings(session, tmp);
|
||||
switch_ivr_transfer_recordings(session, tmp);
|
||||
switch_core_session_rwunlock(tmp);
|
||||
}
|
||||
|
||||
|
||||
if (switch_true(switch_channel_get_variable(b_tech_pvt->channel, "recording_follow_transfer")) &&
|
||||
(tmp = switch_core_session_locate(br_b))) {
|
||||
switch_core_media_bug_transfer_recordings(b_session, tmp);
|
||||
switch_ivr_transfer_recordings(b_session, tmp);
|
||||
switch_core_session_rwunlock(tmp);
|
||||
}
|
||||
|
||||
@@ -3117,7 +3117,7 @@ static switch_bool_t attended_transfer(switch_core_session_t *session, switch_co
|
||||
ext = switch_channel_get_variable(hup_channel, "destination_number");
|
||||
|
||||
if (switch_true(switch_channel_get_variable(hup_channel, "recording_follow_transfer"))) {
|
||||
switch_core_media_bug_transfer_recordings(hup_session, t_session);
|
||||
switch_ivr_transfer_recordings(hup_session, t_session);
|
||||
}
|
||||
|
||||
if (idest) {
|
||||
|
||||
Reference in new issue
Block a user