提交 43ca3ee8 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-3634 the call is not bridged yet so we need to take more action, try this patch

上级 0c702ef0
......@@ -1190,6 +1190,7 @@ typedef enum {
CF_SIMPLIFY,
CF_ZOMBIE_EXEC,
CF_INTERCEPT,
CF_INTERCEPTED,
/* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */
/* IF YOU ADD NEW ONES CHECK IF THEY SHOULD PERSIST OR ZERO THEM IN switch_core_session.c switch_core_session_request_xml() */
CF_FLAG_MAX
......
......@@ -1640,6 +1640,7 @@ SWITCH_DECLARE(void) switch_ivr_intercept_session(switch_core_session_t *session
switch_channel_set_state(bchannel, CS_PARK);
}
switch_channel_set_flag(channel, CF_INTERCEPTED);
switch_ivr_uuid_bridge(switch_core_session_get_uuid(session), uuid);
switch_core_session_rwunlock(rsession);
......
......@@ -3310,6 +3310,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
switch_channel_set_variable(caller_channel, buf, buf2);
}
if (caller_channel && switch_channel_test_flag(caller_channel, CF_INTERCEPTED)) {
*cause = SWITCH_CAUSE_PICKED_OFF;
}
if (!*cause) {
if (reason) {
*cause = reason;
......@@ -3419,6 +3423,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
if (!(state == CS_RESET || switch_channel_test_flag(originate_status[i].peer_channel, CF_TRANSFER) ||
switch_channel_test_flag(originate_status[i].peer_channel, CF_REDIRECT) ||
switch_channel_test_flag(originate_status[i].peer_channel, CF_BRIDGED))) {
if (caller_channel && switch_channel_test_flag(caller_channel, CF_INTERCEPTED)) {
switch_channel_set_flag(originate_status[i].peer_channel, CF_INTERCEPT);
}
switch_channel_hangup(originate_status[i].peer_channel, *cause);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论