diff --git a/src/include/switch_types.h b/src/include/switch_types.h index a1bc0204ec..e978d33f2d 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -1454,6 +1454,7 @@ typedef enum { CC_IO_OVERRIDE, CC_RTP_RTT, CC_MSRP, + CC_MUTE_VIA_MEDIA_STREAM, /* WARNING: DO NOT ADD ANY FLAGS BELOW THIS LINE */ CC_FLAG_MAX } switch_channel_cap_t; diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 074e233aee..68125879ce 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -160,6 +160,7 @@ void sofia_glue_attach_private(switch_core_session_t *session, sofia_profile_t * switch_channel_set_cap(tech_pvt->channel, CC_FS_RTP); switch_channel_set_cap(tech_pvt->channel, CC_RTP_RTT); switch_channel_set_cap(tech_pvt->channel, CC_MSRP); + switch_channel_set_cap(tech_pvt->channel, CC_MUTE_VIA_MEDIA_STREAM); switch_channel_set_cap(tech_pvt->channel, CC_QUEUEABLE_DTMF_DELAY); diff --git a/src/switch_ivr.c b/src/switch_ivr.c index ba292376f0..51875e4c25 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -2114,7 +2114,7 @@ SWITCH_DECLARE(void) switch_ivr_check_hold(switch_core_session_t *session) switch_channel_t *channel = switch_core_session_get_channel(session); switch_media_flow_t flow; - if (switch_channel_test_flag(channel, CF_ANSWERED) && + if (switch_channel_test_flag(channel, CF_ANSWERED) && switch_channel_test_cap(channel, CC_MUTE_VIA_MEDIA_STREAM) && (flow = switch_core_session_media_flow(session, SWITCH_MEDIA_TYPE_AUDIO)) != SWITCH_MEDIA_FLOW_SENDRECV) { switch_core_session_message_t msg = { 0 };