aboutsummaryrefslogtreecommitdiffstats
path: root/main/asterisk/ASTERISK-19109.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/asterisk/ASTERISK-19109.patch')
-rw-r--r--main/asterisk/ASTERISK-19109.patch267
1 files changed, 143 insertions, 124 deletions
diff --git a/main/asterisk/ASTERISK-19109.patch b/main/asterisk/ASTERISK-19109.patch
index 09491bd8b6..2e812f78e0 100644
--- a/main/asterisk/ASTERISK-19109.patch
+++ b/main/asterisk/ASTERISK-19109.patch
@@ -1,21 +1,21 @@
-diff -ru asterisk-12.2.0.orig/CHANGES asterisk-12.2.0/CHANGES
---- asterisk-12.2.0.orig/CHANGES 2014-04-22 00:02:00.000000000 -0300
-+++ asterisk-12.2.0/CHANGES 2014-05-03 11:54:02.079108226 -0300
-@@ -10,6 +10,10 @@
-
-
+diff -ru asterisk-12.6.0.orig/CHANGES asterisk-12.6.0/CHANGES
+--- asterisk-12.6.0.orig/CHANGES 2014-08-05 23:10:52.000000000 -0300
++++ asterisk-12.6.0/CHANGES 2014-09-25 09:22:51.419497839 -0300
+@@ -8,6 +8,10 @@
+ ===
+ ==============================================================================
+
+ * Added support for deaf participants with CLI commands, manager actions
+ and ConfBridge DTMF actions to toggle the deaf state.
+
------------------------------------------------------------------------------
- --- Functionality changes from Asterisk 12.1.0 to Asterisk 12.2.0 ------------
+ --- Functionality changes from Asterisk 12.4.0 to Asterisk 12.5.0 ------------
------------------------------------------------------------------------------
-diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_confbridge.c
---- asterisk-12.2.0.orig/apps/app_confbridge.c 2014-03-21 00:54:59.000000000 -0200
-+++ asterisk-12.2.0/apps/app_confbridge.c 2014-05-03 11:53:14.806030993 -0300
-@@ -215,6 +215,30 @@
+diff -ru asterisk-12.6.0.orig/apps/app_confbridge.c asterisk-12.6.0/apps/app_confbridge.c
+--- asterisk-12.6.0.orig/apps/app_confbridge.c 2014-08-30 20:28:04.000000000 -0300
++++ asterisk-12.6.0/apps/app_confbridge.c 2014-09-25 09:38:27.299505944 -0300
+@@ -219,6 +219,30 @@
<description>
</description>
</manager>
@@ -46,7 +46,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
<manager name="ConfbridgeKick" language="en_US">
<synopsis>
Kick a Confbridge user.
-@@ -311,6 +335,13 @@
+@@ -318,6 +342,13 @@
CONF_RECORD_STOP,
};
@@ -60,7 +60,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
/*! \brief Container to hold all conference bridges in progress */
struct ao2_container *conference_bridges;
-@@ -382,6 +413,10 @@
+@@ -389,6 +420,10 @@
return S_OR(custom_sounds->muted, "conf-muted");
case CONF_SOUND_UNMUTED:
return S_OR(custom_sounds->unmuted, "conf-unmuted");
@@ -71,8 +71,8 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
case CONF_SOUND_ONLY_ONE:
return S_OR(custom_sounds->onlyone, "conf-onlyone");
case CONF_SOUND_THERE_ARE:
-@@ -495,6 +530,16 @@
- send_conf_stasis(conference, chan, confbridge_unmute_type(), NULL, 1);
+@@ -539,6 +574,16 @@
+ ast_json_unref(json_object);
}
+static void send_deafen_event(struct ast_channel *chan, struct confbridge_conference *conference)
@@ -88,7 +88,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
static void set_rec_filename(struct confbridge_conference *conference, struct ast_str **filename, int is_new)
{
char *rec_file = conference->b_profile.rec_file;
-@@ -1657,6 +1702,11 @@
+@@ -1697,6 +1742,11 @@
/* Set user level mute request. */
user.muted = 1;
}
@@ -100,7 +100,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
/* Look for a conference bridge matching the provided name */
if (!(conference = join_conference_bridge(args.conf_name, &user))) {
-@@ -1846,6 +1896,30 @@
+@@ -1885,6 +1935,30 @@
return 0;
}
@@ -131,7 +131,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
static int action_playback(struct ast_bridge_channel *bridge_channel, const char *playback_file)
{
char *file_copy = ast_strdupa(playback_file);
-@@ -2034,6 +2108,11 @@
+@@ -2071,6 +2145,11 @@
case MENU_ACTION_PARTICIPANT_COUNT:
announce_user_count(conference, user);
break;
@@ -143,88 +143,107 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
case MENU_ACTION_PLAYBACK:
if (!stop_prompts) {
res |= action_playback(bridge_channel, menu_action->data.playback_file);
-@@ -2380,14 +2459,29 @@
- return res;
+@@ -2446,38 +2525,65 @@
}
+ /* \internal
+- * \brief Mute/unmute a single user.
++ * \brief Send feature change test event.
+ */
+-static void generic_mute_unmute_user(struct confbridge_conference *conference, struct confbridge_user *user, int mute)
+static void test_suite_feature_action_event_notify(
+ struct confbridge_conference *conference,
+ struct confbridge_user *user,
+ const char *state, const char *verb)
-+{
+ {
+- /* Set user level mute request. */
+- user->muted = mute ? 1 : 0;
+-
+- conf_update_user_mute(user);
+- ast_test_suite_event_notify("CONF_MUTE",
+ ast_test_suite_event_notify(state,
-+ "Message: participant %s %s\r\n"
-+ "Conference: %s\r\n"
-+ "Channel: %s",
-+ ast_channel_name(user->chan),
+ "Message: participant %s %s\r\n"
+ "Conference: %s\r\n"
+ "Channel: %s",
+ ast_channel_name(user->chan),
+- mute ? "muted" : "unmuted",
+ verb,
-+ conference->b_profile.name,
-+ ast_channel_name(user->chan));
+ conference->b_profile.name,
+ ast_channel_name(user->chan));
+- if (mute) {
+- send_mute_event(user, conference);
+- } else {
+- send_unmute_event(user, conference);
+}
+
++/* \internal
++ * \brief Change a feature for one conference user.
++ */
++static void generic_feature_action_helper_user(
++ struct confbridge_conference *conference, struct confbridge_user *user,
++ enum confbridge_feature_action action)
++{
++ switch (action) {
++ case CONFBRIDGE_FEATURE_DEAFEN:
++ user->features.deaf = 1;
++ test_suite_feature_action_event_notify(conference, user, "CONF_DEAF", "deafened");
++ send_deafen_event(user->chan, conference);
++ break;
++ case CONFBRIDGE_FEATURE_UNDEAFEN:
++ user->features.deaf = 0;
++ test_suite_feature_action_event_notify(conference, user, "CONF_DEAF", "undeafened");
++ send_undeafen_event(user->chan, conference);
++ break;
++ case CONFBRIDGE_FEATURE_MUTE:
++ user->muted = 1;
++ conf_update_user_mute(user);
++ test_suite_feature_action_event_notify(conference, user, "CONF_MUTE", "muted");
++ send_mute_event(user->chan, conference);
++ break;
++ case CONFBRIDGE_FEATURE_UNMUTE:
++ default:
++ user->muted = 0;
++ conf_update_user_mute(user);
++ test_suite_feature_action_event_notify(conference, user, "CONF_MUTE", "unmuted");
++ send_unmute_event(user->chan, conference);
++ break;
+ }
+ }
+
/* \internal
- * \brief finds a conference user by channel name and mutes/unmutes them.
+- *
+ * \brief finds a conference user by channel name and changes feature bits on it.
- *
* \retval 0 success
* \retval -1 conference not found
* \retval -2 user not found
*/
--static int generic_mute_unmute_helper(int mute, const char *conference_name, const char *chan_name)
-+static int generic_feature_action_helper(enum confbridge_feature_action action, const char *conference_name, const char *chan_name)
+-static int generic_mute_unmute_helper(int mute, const char *conference_name,
+- const char *chan_name)
++static int generic_feature_action_helper(enum confbridge_feature_action action,
++ const char *conference_name, const char *chan_name)
{
- struct confbridge_conference *conference;
+ RAII_VAR(struct confbridge_conference *, conference, NULL, ao2_cleanup);
struct confbridge_user *user;
-@@ -2404,25 +2498,33 @@
- }
- }
- if (user) {
-- /* Set user level mute request. */
-- user->muted = mute ? 1 : 0;
--
-- conf_update_user_mute(user);
-- ast_test_suite_event_notify("CONF_MUTE",
-- "Message: participant %s %s\r\n"
-- "Conference: %s\r\n"
-- "Channel: %s",
-- ast_channel_name(user->chan),
-- mute ? "muted" : "unmuted",
-- conference->b_profile.name,
-- ast_channel_name(user->chan));
-- if (mute) {
-+ switch (action) {
-+ case CONFBRIDGE_FEATURE_DEAFEN:
-+ user->features.deaf = 1;
-+ test_suite_feature_action_event_notify(conference, user, "CONF_DEAF", "deafened");
-+ send_deafen_event(user->chan, conference);
-+ break;
-+ case CONFBRIDGE_FEATURE_UNDEAFEN:
-+ user->features.deaf = 0;
-+ test_suite_feature_action_event_notify(conference, user, "CONF_DEAF", "undeafened");
-+ send_undeafen_event(user->chan, conference);
-+ break;
-+ case CONFBRIDGE_FEATURE_MUTE:
-+ user->muted = 1;
-+ conf_update_user_mute(user);
-+ test_suite_feature_action_event_notify(conference, user, "CONF_MUTE", "muted");
- send_mute_event(user->chan, conference);
-- } else {
-+ break;
-+ case CONFBRIDGE_FEATURE_UNMUTE:
-+ default:
-+ user->muted = 0;
-+ conf_update_user_mute(user);
-+ test_suite_feature_action_event_notify(conference, user, "CONF_MUTE", "unmuted");
- send_unmute_event(user->chan, conference);
-+ break;
- }
- } else {
-- res = -2;;
-+ res = -2;
- }
- ao2_unlock(conference);
- ao2_ref(conference, -1);
-@@ -2430,9 +2532,10 @@
+@@ -2497,7 +2603,7 @@
+ strlen(chan_name));
+ if (match || all
+ || (participants && !ast_test_flag(&user->u_profile, USER_OPT_ADMIN))) {
+- generic_mute_unmute_user(conference, user, mute);
++ generic_feature_action_helper_user(conference, user, action);
+ res = 0;
+ if (match) {
+ return res;
+@@ -2510,7 +2616,7 @@
+ strlen(chan_name));
+ if (match || all
+ || (participants && !ast_test_flag(&user->u_profile, USER_OPT_ADMIN))) {
+- generic_mute_unmute_user(conference, user, mute);
++ generic_feature_action_helper_user(conference, user, action);
+ res = 0;
+ if (match) {
+ return res;
+@@ -2522,9 +2628,10 @@
return res;
}
@@ -237,8 +256,8 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
if (res == -1) {
ast_cli(a->fd, "No conference bridge named '%s' found!\n", a->argv[2]);
-@@ -2441,7 +2544,24 @@
- ast_cli(a->fd, "No channel named '%s' found in conference %s\n", a->argv[3], a->argv[2]);
+@@ -2537,7 +2644,24 @@
+ }
return -1;
}
- ast_cli(a->fd, "%s %s from confbridge %s\n", mute ? "Muting" : "Unmuting", a->argv[3], a->argv[2]);
@@ -263,7 +282,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
return 0;
}
-@@ -2470,7 +2590,7 @@
+@@ -2567,7 +2691,7 @@
return CLI_SHOWUSAGE;
}
@@ -272,7 +291,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
return CLI_SUCCESS;
}
-@@ -2500,7 +2620,53 @@
+@@ -2598,7 +2722,53 @@
return CLI_SHOWUSAGE;
}
@@ -327,16 +346,16 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
return CLI_SUCCESS;
}
-@@ -2655,6 +2821,8 @@
+@@ -2753,6 +2923,8 @@
AST_CLI_DEFINE(handle_cli_confbridge_kick, "Kick participants out of conference bridges."),
- AST_CLI_DEFINE(handle_cli_confbridge_mute, "Mute a participant."),
- AST_CLI_DEFINE(handle_cli_confbridge_unmute, "Unmute a participant."),
+ AST_CLI_DEFINE(handle_cli_confbridge_mute, "Mute participants."),
+ AST_CLI_DEFINE(handle_cli_confbridge_unmute, "Unmute participants."),
+ AST_CLI_DEFINE(handle_cli_confbridge_deafen, "Deafen a participant."),
+ AST_CLI_DEFINE(handle_cli_confbridge_undeafen, "Undeafen a participant."),
AST_CLI_DEFINE(handle_cli_confbridge_lock, "Lock a conference."),
AST_CLI_DEFINE(handle_cli_confbridge_unlock, "Unlock a conference."),
AST_CLI_DEFINE(handle_cli_confbridge_start_record, "Start recording a conference"),
-@@ -2805,10 +2973,11 @@
+@@ -2905,10 +3077,11 @@
return 0;
}
@@ -349,7 +368,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
int res = 0;
if (ast_strlen_zero(conference_name)) {
-@@ -2824,7 +2993,7 @@
+@@ -2924,7 +3097,7 @@
return 0;
}
@@ -358,7 +377,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
if (res == -1) {
astman_send_error(s, m, "No Conference by that name found.");
-@@ -2834,17 +3003,41 @@
+@@ -2934,17 +3107,41 @@
return 0;
}
@@ -403,7 +422,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
}
static int action_lock_unlock_helper(struct mansession *s, const struct message *m, int lock)
-@@ -3197,6 +3390,8 @@
+@@ -3297,6 +3494,8 @@
ast_manager_unregister("ConfbridgeListRooms");
ast_manager_unregister("ConfbridgeMute");
ast_manager_unregister("ConfbridgeUnmute");
@@ -412,7 +431,7 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
ast_manager_unregister("ConfbridgeKick");
ast_manager_unregister("ConfbridgeUnlock");
ast_manager_unregister("ConfbridgeLock");
-@@ -3266,6 +3461,8 @@
+@@ -3366,6 +3565,8 @@
res |= ast_manager_register_xml("ConfbridgeListRooms", EVENT_FLAG_REPORTING, action_confbridgelistrooms);
res |= ast_manager_register_xml("ConfbridgeMute", EVENT_FLAG_CALL, action_confbridgemute);
res |= ast_manager_register_xml("ConfbridgeUnmute", EVENT_FLAG_CALL, action_confbridgeunmute);
@@ -421,9 +440,9 @@ diff -ru asterisk-12.2.0.orig/apps/app_confbridge.c asterisk-12.2.0/apps/app_con
res |= ast_manager_register_xml("ConfbridgeKick", EVENT_FLAG_CALL, action_confbridgekick);
res |= ast_manager_register_xml("ConfbridgeUnlock", EVENT_FLAG_CALL, action_confbridgeunlock);
res |= ast_manager_register_xml("ConfbridgeLock", EVENT_FLAG_CALL, action_confbridgelock);
-diff -ru asterisk-12.2.0.orig/apps/confbridge/conf_config_parser.c asterisk-12.2.0/apps/confbridge/conf_config_parser.c
---- asterisk-12.2.0.orig/apps/confbridge/conf_config_parser.c 2014-03-27 21:15:35.000000000 -0200
-+++ asterisk-12.2.0/apps/confbridge/conf_config_parser.c 2014-05-03 11:51:44.939851173 -0300
+diff -ru asterisk-12.6.0.orig/apps/confbridge/conf_config_parser.c asterisk-12.6.0/apps/confbridge/conf_config_parser.c
+--- asterisk-12.6.0.orig/apps/confbridge/conf_config_parser.c 2014-05-10 01:39:22.000000000 -0300
++++ asterisk-12.6.0/apps/confbridge/conf_config_parser.c 2014-09-25 09:22:51.419497839 -0300
@@ -862,6 +862,10 @@
ast_string_field_set(sounds, muted, sound_file);
} else if (!strcasecmp(sound_name, "sound_unmuted")) {
@@ -480,10 +499,10 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/conf_config_parser.c asterisk-12.2
aco_option_register(&cfg_info, "music_on_hold_when_empty", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_MUSICONHOLD);
aco_option_register(&cfg_info, "quiet", ACO_EXACT, user_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct user_profile, flags), USER_OPT_QUIET);
aco_option_register_custom(&cfg_info, "announce_user_count_all", ACO_EXACT, user_types, "no", announce_user_count_all_handler, 0);
-diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2.0/apps/confbridge/confbridge_manager.c
---- asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c 2013-09-30 21:48:57.000000000 -0300
-+++ asterisk-12.2.0/apps/confbridge/confbridge_manager.c 2014-05-03 11:51:44.939851173 -0300
-@@ -161,6 +161,38 @@
+diff -ru asterisk-12.6.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.6.0/apps/confbridge/confbridge_manager.c
+--- asterisk-12.6.0.orig/apps/confbridge/confbridge_manager.c 2014-08-27 20:21:57.000000000 -0300
++++ asterisk-12.6.0/apps/confbridge/confbridge_manager.c 2014-09-25 09:22:51.419497839 -0300
+@@ -189,6 +189,38 @@
</see-also>
</managerEventInstance>
</managerEvent>
@@ -522,8 +541,8 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
<managerEvent language="en_US" name="ConfbridgeTalking">
<managerEventInstance class="EVENT_FLAG_CALL">
<synopsis>Raised when a confbridge participant unmutes.</synopsis>
-@@ -271,6 +303,18 @@
- confbridge_publish_manager_event(message, "ConfbridgeUnmute", NULL);
+@@ -338,6 +370,18 @@
+ ast_free(extra_text);
}
+static void confbridge_deafen_cb(void *data, struct stasis_subscription *sub,
@@ -541,7 +560,7 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
static void confbridge_talking_cb(void *data, struct stasis_subscription *sub,
struct stasis_message *message)
{
-@@ -297,6 +341,8 @@
+@@ -366,6 +410,8 @@
STASIS_MESSAGE_TYPE_DEFN(confbridge_stop_record_type);
STASIS_MESSAGE_TYPE_DEFN(confbridge_mute_type);
STASIS_MESSAGE_TYPE_DEFN(confbridge_unmute_type);
@@ -550,7 +569,7 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
STASIS_MESSAGE_TYPE_DEFN(confbridge_talking_type);
void manager_confbridge_shutdown(void) {
-@@ -308,6 +354,8 @@
+@@ -377,6 +423,8 @@
STASIS_MESSAGE_TYPE_CLEANUP(confbridge_stop_record_type);
STASIS_MESSAGE_TYPE_CLEANUP(confbridge_mute_type);
STASIS_MESSAGE_TYPE_CLEANUP(confbridge_unmute_type);
@@ -559,7 +578,7 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
STASIS_MESSAGE_TYPE_CLEANUP(confbridge_talking_type);
if (bridge_state_router) {
-@@ -331,6 +379,8 @@
+@@ -400,6 +448,8 @@
STASIS_MESSAGE_TYPE_INIT(confbridge_stop_record_type);
STASIS_MESSAGE_TYPE_INIT(confbridge_mute_type);
STASIS_MESSAGE_TYPE_INIT(confbridge_unmute_type);
@@ -568,7 +587,7 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
STASIS_MESSAGE_TYPE_INIT(confbridge_talking_type);
bridge_state_router = stasis_message_router_create(
-@@ -397,6 +447,20 @@
+@@ -466,6 +516,20 @@
return -1;
}
if (stasis_message_router_add(bridge_state_router,
@@ -589,7 +608,7 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
confbridge_talking_type(),
confbridge_talking_cb,
NULL)) {
-@@ -467,6 +531,20 @@
+@@ -536,6 +600,20 @@
NULL)) {
manager_confbridge_shutdown();
return -1;
@@ -610,9 +629,9 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/confbridge_manager.c asterisk-12.2
}
if (stasis_message_router_add(channel_state_router,
confbridge_talking_type(),
-diff -ru asterisk-12.2.0.orig/apps/confbridge/include/confbridge.h asterisk-12.2.0/apps/confbridge/include/confbridge.h
---- asterisk-12.2.0.orig/apps/confbridge/include/confbridge.h 2014-02-10 17:54:45.000000000 -0200
-+++ asterisk-12.2.0/apps/confbridge/include/confbridge.h 2014-05-03 11:51:44.939851173 -0300
+diff -ru asterisk-12.6.0.orig/apps/confbridge/include/confbridge.h asterisk-12.6.0/apps/confbridge/include/confbridge.h
+--- asterisk-12.6.0.orig/apps/confbridge/include/confbridge.h 2014-06-04 10:23:58.000000000 -0300
++++ asterisk-12.6.0/apps/confbridge/include/confbridge.h 2014-09-25 09:22:51.419497839 -0300
@@ -58,6 +58,7 @@
USER_OPT_DTMF_PASS = (1 << 13), /*!< Sets if dtmf should be passed into the conference or not */
USER_OPT_ANNOUNCEUSERCOUNTALL = (1 << 14), /*!< Sets if the number of users should be announced to everyone. */
@@ -656,9 +675,9 @@ diff -ru asterisk-12.2.0.orig/apps/confbridge/include/confbridge.h asterisk-12.2
/*! \brief Looks to see if sound file is stored in bridge profile sounds, if not
* default sound is provided.*/
-diff -ru asterisk-12.2.0.orig/bridges/bridge_softmix.c asterisk-12.2.0/bridges/bridge_softmix.c
---- asterisk-12.2.0.orig/bridges/bridge_softmix.c 2014-03-17 18:52:12.000000000 -0200
-+++ asterisk-12.2.0/bridges/bridge_softmix.c 2014-05-03 11:51:44.943184488 -0300
+diff -ru asterisk-12.6.0.orig/bridges/bridge_softmix.c asterisk-12.6.0/bridges/bridge_softmix.c
+--- asterisk-12.6.0.orig/bridges/bridge_softmix.c 2014-05-10 01:39:22.000000000 -0300
++++ asterisk-12.6.0/bridges/bridge_softmix.c 2014-09-25 09:22:51.419497839 -0300
@@ -926,16 +926,23 @@
ast_mutex_lock(&sc->lock);
@@ -692,9 +711,9 @@ diff -ru asterisk-12.2.0.orig/bridges/bridge_softmix.c asterisk-12.2.0/bridges/b
ast_mutex_unlock(&sc->lock);
-diff -ru asterisk-12.2.0.orig/configs/confbridge.conf.sample asterisk-12.2.0/configs/confbridge.conf.sample
---- asterisk-12.2.0.orig/configs/confbridge.conf.sample 2014-02-10 17:54:45.000000000 -0200
-+++ asterisk-12.2.0/configs/confbridge.conf.sample 2014-05-03 11:51:44.943184488 -0300
+diff -ru asterisk-12.6.0.orig/configs/confbridge.conf.sample asterisk-12.6.0/configs/confbridge.conf.sample
+--- asterisk-12.6.0.orig/configs/confbridge.conf.sample 2014-02-10 17:54:45.000000000 -0200
++++ asterisk-12.6.0/configs/confbridge.conf.sample 2014-09-25 09:22:51.419497839 -0300
@@ -20,6 +20,7 @@
;admin=yes ; Sets if the user is an admin or not. Off by default.
;marked=yes ; Sets if this is a marked user or not. Off by default.
@@ -721,10 +740,10 @@ diff -ru asterisk-12.2.0.orig/configs/confbridge.conf.sample asterisk-12.2.0/con
; no_op ; This action does nothing (No Operation). Its only real purpose exists for
; being able to reserve a sequence in the config as a menu exit sequence.
-diff -ru asterisk-12.2.0.orig/include/asterisk/bridge_features.h asterisk-12.2.0/include/asterisk/bridge_features.h
---- asterisk-12.2.0.orig/include/asterisk/bridge_features.h 2013-08-21 18:51:19.000000000 -0300
-+++ asterisk-12.2.0/include/asterisk/bridge_features.h 2014-05-03 11:51:44.943184488 -0300
-@@ -253,6 +253,8 @@
+diff -ru asterisk-12.6.0.orig/include/asterisk/bridge_features.h asterisk-12.6.0/include/asterisk/bridge_features.h
+--- asterisk-12.6.0.orig/include/asterisk/bridge_features.h 2014-08-07 18:19:53.000000000 -0300
++++ asterisk-12.6.0/include/asterisk/bridge_features.h 2014-09-25 09:22:51.419497839 -0300
+@@ -273,6 +273,8 @@
unsigned int usable:1;
/*! TRUE if the channel/bridge is muted. */
unsigned int mute:1;
@@ -733,10 +752,10 @@ diff -ru asterisk-12.2.0.orig/include/asterisk/bridge_features.h asterisk-12.2.0
/*! TRUE if DTMF should be passed into the bridge tech. */
unsigned int dtmf_passthrough:1;
};
-diff -ru asterisk-12.2.0.orig/main/bridge_channel.c asterisk-12.2.0/main/bridge_channel.c
---- asterisk-12.2.0.orig/main/bridge_channel.c 2014-03-17 18:52:12.000000000 -0200
-+++ asterisk-12.2.0/main/bridge_channel.c 2014-05-03 11:51:44.943184488 -0300
-@@ -756,7 +756,21 @@
+diff -ru asterisk-12.6.0.orig/main/bridge_channel.c asterisk-12.6.0/main/bridge_channel.c
+--- asterisk-12.6.0.orig/main/bridge_channel.c 2014-08-13 18:21:07.000000000 -0300
++++ asterisk-12.6.0/main/bridge_channel.c 2014-09-25 09:22:51.422831171 -0300
+@@ -903,7 +903,21 @@
return 0;
}