Protect your Asterisk from patent trolls

 

There’s a patent troll going after Asterisk users / integrators. The specific patent is related to using DTMF to mute yourself while in a conference. You can apply the following patches to protect yourself. This doesn’t remove the prompt from the menu, but it won’t allow the feature to work, therefore keeping you safe from any extortion attempts.

This patch is for Asterisk 1.8 and the Meetme and Confbridge applications:

 

diff -u -r apps/app_confbridge.c asterisk-1.8.23.0-meetme/apps/app_confbridge.c
--- apps/app_confbridge.c       2013-01-02 12:54:20.000000000 -0400
+++ apps/app_confbridge.c       2013-08-15 16:25:18.000000000 -0300
@@ -665,13 +665,7 @@
        digit = ast_waitstream(bridge_channel->chan, AST_DIGIT_ANY);
        ast_stopstream(bridge_channel->chan);
 
-       if (digit == '1') {
-               /* 1 - Mute or unmute yourself, note we only allow manipulation if they aren't waiting for a marked user or if marked users exist */
-               if (!ast_test_flag(&conference_bridge_user->flags, OPTION_WAITMARKED) || conference_bridge->markedusers) {
-                       conference_bridge_user->features.mute = (!conference_bridge_user->features.mute ? 1 : 0);
-               }
-               res = ast_stream_and_wait(bridge_channel->chan, (conference_bridge_user->features.mute ? "conf-muted" : "conf-unmuted"), "");
-       } else if (isadmin && digit == '2') {
+       if (isadmin && digit == '2') {
                /* 2 - Unlock or lock conference */
                conference_bridge->locked = (!conference_bridge->locked ? 1 : 0);
                res = ast_stream_and_wait(bridge_channel->chan, (conference_bridge->locked ? "conf-lockednow" : "conf-unlockednow"), "");
diff -u -r apps/app_meetme.c asterisk-1.8.23.0-meetme/apps/app_meetme.c
--- apps/app_meetme.c   2013-05-06 12:52:16.000000000 -0300
+++ apps/app_meetme.c   2013-08-15 16:20:39.000000000 -0300
@@ -2312,24 +2312,6 @@
 static void meetme_menu_normal(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user)
 {
        switch (*dtmf) {
-       case '1': /* Un/Mute */
-               *menu_mode = MENU_DISABLED;
-
-               /* user can only toggle the self-muted state */
-               user->adminflags ^= ADMINFLAG_SELFMUTED;
-
-               /* they can't override the admin mute state */
-               if (ast_test_flag64(confflags, CONFFLAG_MONITOR) || (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED))) {
-                       if (!ast_streamfile(chan, "conf-muted", chan->language)) {
-                               ast_waitstream(chan, "");
-                       }
-               } else {
-                       if (!ast_streamfile(chan, "conf-unmuted", chan->language)) {
-                               ast_waitstream(chan, "");
-                       }
-               }
-               break;
-
        case '2':
                *menu_mode = MENU_DISABLED;
                if (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)) {
@@ -2392,26 +2374,6 @@
 static void meetme_menu_admin(enum menu_modes *menu_mode, int *dtmf, struct ast_conference *conf, struct ast_flags64 *confflags, struct ast_channel *chan, struct ast_conf_user *user)
 {
        switch(*dtmf) {
-       case '1': /* Un/Mute */
-               *menu_mode = MENU_DISABLED;
-               /* for admin, change both admin and use flags */
-               if (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED)) {
-                       user->adminflags &= ~(ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
-               } else {
-                       user->adminflags |= (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED);
-               }
-
-               if (ast_test_flag64(confflags, CONFFLAG_MONITOR) || (user->adminflags & (ADMINFLAG_MUTED | ADMINFLAG_SELFMUTED))) {
-                       if (!ast_streamfile(chan, "conf-muted", chan->language)) {
-                               ast_waitstream(chan, "");
-                       }
-               } else {
-                       if (!ast_streamfile(chan, "conf-unmuted", chan->language)) {
-                               ast_waitstream(chan, "");
-                       }
-               }
-               break;
-
        case '2': /* Un/Lock the Conference */
                *menu_mode = MENU_DISABLED;
                if (conf->locked) {

 

 

This patch is for Asterisk 11 and for the Confbridge application:

 

--- apps/app_confbridge.c.old   2014-09-16 15:08:27.000000000 -0300
+++ apps/app_confbridge.c       2014-09-16 15:10:06.000000000 -0300
@@ -2039,11 +2039,6 @@
 
        AST_LIST_TRAVERSE(&menu_entry->actions, menu_action, action) {
                switch (menu_action->id) {
-               case MENU_ACTION_TOGGLE_MUTE:
-                       res |= action_toggle_mute(conference_bridge,
-                               conference_bridge_user,
-                               bridge_channel->chan);
-                       break;
                case MENU_ACTION_ADMIN_TOGGLE_MUTE_PARTICIPANTS:
                        if (!isadmin) {
                                break;

 

One Reply to “Protect your Asterisk from patent trolls”

  1. Are they going after just Asterisk users or the likes Avaya, Interactive, Cisco, and Shoretel? The Unified Communications domain is crowded as there are going to some folks who will cough up money due to fear.

Comments are closed.