]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[mod_conference] Skip dtmf dist to members with skip-dtmf
authorBrian West <brian@freeswitch.org>
Thu, 1 Jul 2021 20:33:01 +0000 (15:33 -0500)
committerAndrey Volk <andywolk@gmail.com>
Sat, 23 Oct 2021 19:00:50 +0000 (22:00 +0300)
src/mod/applications/mod_conference/conference_member.c
src/mod/applications/mod_conference/conference_utils.c
src/mod/applications/mod_conference/mod_conference.h

index f9c036baec8b253afafacc55fcb3e0f8a5b910e4..6df96fca9719aa32aeb351faa69432146dc60d52 100644 (file)
@@ -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++) {
index eb482b91658bc47865f69fa5951d9ca67e8046b0..c8dd0fd4e9c96fa2decf7b5518f35d6e84d60a8c 100644 (file)
@@ -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")) {
index e44d9589b626d91d2a694ff7fd30c508660fc6df..2131df99c3b97929c4724114db9f00586f35b1c8 100644 (file)
@@ -214,6 +214,7 @@ typedef enum {
        MFLAG_VIDEO_JOIN,
        MFLAG_DED_VID_LAYER,
        MFLAG_HOLD,
+       MFLAG_SKIP_DTMF,
        ///////////////////////////
        MFLAG_MAX
 } member_flag_t;