diff --git a/src/switch_core_media.c b/src/switch_core_media.c index c7fec519ac..7a47a4b533 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -3668,8 +3668,11 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session 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) { 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 switch_channel_presence(session->channel, "unknown", msg, NULL); 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); } @@ -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_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) { 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 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_set_max_missed_packets(a_engine->rtp_session, a_engine->max_missed_packets); }