提交 2b68b0cf authored 作者: Anthony Minessale's avatar Anthony Minessale

send bridge/unbridge indication during eavesdrop

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15638 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 6dbb9b8d
...@@ -628,7 +628,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session ...@@ -628,7 +628,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session
const char *macro_name = "eavesdrop_announce"; const char *macro_name = "eavesdrop_announce";
const char *id_name = NULL; const char *id_name = NULL;
switch_codec_implementation_t tread_impl = {0}, read_impl = {0}; switch_codec_implementation_t tread_impl = {0}, read_impl = {0};
switch_core_session_message_t msg = { 0 };
if (!switch_channel_media_ready(channel)) { if (!switch_channel_media_ready(channel)) {
goto end; goto end;
...@@ -734,6 +734,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session ...@@ -734,6 +734,14 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session
goto end; goto end;
} }
msg.from = __FILE__;
/* Tell the channel we are going to be in a bridge */
msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE;
switch_core_session_receive_message(session, &msg);
while (switch_channel_ready(tchannel) && switch_channel_ready(channel)) { while (switch_channel_ready(tchannel) && switch_channel_ready(channel)) {
uint32_t len = sizeof(buf); uint32_t len = sizeof(buf);
switch_event_t *event = NULL; switch_event_t *event = NULL;
...@@ -743,7 +751,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session ...@@ -743,7 +751,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session
status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0); status = switch_core_session_read_frame(session, &read_frame, SWITCH_IO_FLAG_NONE, 0);
if (!SWITCH_READ_ACCEPTABLE(status)) { if (!SWITCH_READ_ACCEPTABLE(status)) {
goto end; goto end_loop;
} }
if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) { if (switch_core_session_dequeue_event(session, &event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
...@@ -784,7 +792,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session ...@@ -784,7 +792,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session
switch_clear_flag(ep, ED_MUX_WRITE); switch_clear_flag(ep, ED_MUX_WRITE);
break; break;
case '*': case '*':
goto end; goto end_loop;
default: default:
z = 0; z = 0;
break; break;
...@@ -836,7 +844,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session ...@@ -836,7 +844,16 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session
} }
end_loop:
/* Tell the channel we are no longer going to be in a bridge */
msg.message_id = SWITCH_MESSAGE_INDICATE_UNBRIDGE;
switch_core_session_receive_message(session, &msg);
end: end:
if ( codec_initialized ) if ( codec_initialized )
switch_core_codec_destroy(&codec); switch_core_codec_destroy(&codec);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论