提交 6c712045 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-6108 --resolve caused by switch_ivr_media while on hold

上级 c346f081
...@@ -3668,8 +3668,11 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session ...@@ -3668,8 +3668,11 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session
msg = "hold-private"; msg = "hold-private";
} }
} }
switch_rtp_set_flag(a_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE); if (a_engine->rtp_session) {
switch_rtp_set_flag(a_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE);
}
if (v_engine->rtp_session) { if (v_engine->rtp_session) {
switch_rtp_set_flag(v_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE); switch_rtp_set_flag(v_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE);
} }
...@@ -3679,7 +3682,7 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session ...@@ -3679,7 +3682,7 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session
switch_channel_presence(session->channel, "unknown", msg, NULL); switch_channel_presence(session->channel, "unknown", msg, NULL);
changed = 1; changed = 1;
if (a_engine->max_missed_hold_packets) { if (a_engine->max_missed_hold_packets && a_engine->rtp_session) {
switch_rtp_set_max_missed_packets(a_engine->rtp_session, a_engine->max_missed_hold_packets); switch_rtp_set_max_missed_packets(a_engine->rtp_session, a_engine->max_missed_hold_packets);
} }
...@@ -3706,7 +3709,10 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session ...@@ -3706,7 +3709,10 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session
switch_channel_set_flag(session->channel, CF_PROTO_HOLD); switch_channel_set_flag(session->channel, CF_PROTO_HOLD);
switch_channel_mark_hold(session->channel, SWITCH_TRUE); switch_channel_mark_hold(session->channel, SWITCH_TRUE);
switch_rtp_set_flag(a_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE); if (a_engine->rtp_session) {
switch_rtp_set_flag(a_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE);
}
if (v_engine->rtp_session) { if (v_engine->rtp_session) {
switch_rtp_set_flag(v_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE); switch_rtp_set_flag(v_engine->rtp_session, SWITCH_RTP_FLAG_PAUSE);
} }
...@@ -3721,7 +3727,7 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session ...@@ -3721,7 +3727,7 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session
switch_yield(250000); switch_yield(250000);
if (a_engine->max_missed_packets) { if (a_engine->max_missed_packets && a_engine->rtp_session) {
switch_rtp_reset_media_timer(a_engine->rtp_session); switch_rtp_reset_media_timer(a_engine->rtp_session);
switch_rtp_set_max_missed_packets(a_engine->rtp_session, a_engine->max_missed_packets); switch_rtp_set_max_missed_packets(a_engine->rtp_session, a_engine->max_missed_packets);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论