diff --git a/src/mod/applications/mod_conference/conference_member.c b/src/mod/applications/mod_conference/conference_member.c index f9c036baec..6df96fca97 100644 --- a/src/mod/applications/mod_conference/conference_member.c +++ b/src/mod/applications/mod_conference/conference_member.c @@ -1399,6 +1399,10 @@ void conference_member_send_all_dtmf(conference_member_t *member, conference_obj if (imember->id == member->id) { continue; } + if (conference_utils_member_test_flag(imember, MFLAG_SKIP_DTMF)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Skipping dist-dtmf to member due to skip-dtmf flag.\n"); + continue; + } if (imember->session) { const char *p; for (p = dtmf; p && *p; p++) { diff --git a/src/mod/applications/mod_conference/conference_utils.c b/src/mod/applications/mod_conference/conference_utils.c index eb482b9165..c8dd0fd4e9 100644 --- a/src/mod/applications/mod_conference/conference_utils.c +++ b/src/mod/applications/mod_conference/conference_utils.c @@ -124,6 +124,8 @@ void conference_utils_set_mflags(const char *flags, member_flag_t *f) f[MFLAG_MUTE_DETECT] = 1; } else if (!strcasecmp(argv[i], "dist-dtmf")) { f[MFLAG_DIST_DTMF] = 1; + } else if (!strcasecmp(argv[i], "skip-dtmf")) { + f[MFLAG_SKIP_DTMF] = 1; } else if (!strcasecmp(argv[i], "moderator")) { f[MFLAG_MOD] = 1; } else if (!strcasecmp(argv[i], "nomoh")) { diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index e44d9589b6..2131df99c3 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -214,6 +214,7 @@ typedef enum { MFLAG_VIDEO_JOIN, MFLAG_DED_VID_LAYER, MFLAG_HOLD, + MFLAG_SKIP_DTMF, /////////////////////////// MFLAG_MAX } member_flag_t;