[svn-commits] mmichelson: branch mmichelson/queue_bugbug r396921 - in /team/mmichelson/queu...

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Aug 19 09:28:08 CDT 2013


Author: mmichelson
Date: Mon Aug 19 09:27:33 2013
New Revision: 396921

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=396921
Log:
Resolve conflict and reset automerge.


Added:
    team/mmichelson/queue_bugbug/res/parking/parking_tests.c
      - copied unchanged from r396915, trunk/res/parking/parking_tests.c
Removed:
    team/mmichelson/queue_bugbug/res/res_stasis_bridge_add.c
    team/mmichelson/queue_bugbug/res/res_stasis_bridge_add.exports.in
Modified:
    team/mmichelson/queue_bugbug/   (props changed)
    team/mmichelson/queue_bugbug/UPGRADE-11.txt
    team/mmichelson/queue_bugbug/apps/app_bridgewait.c
    team/mmichelson/queue_bugbug/apps/app_confbridge.c
    team/mmichelson/queue_bugbug/apps/app_meetme.c
    team/mmichelson/queue_bugbug/apps/app_minivm.c
    team/mmichelson/queue_bugbug/apps/app_playback.c
    team/mmichelson/queue_bugbug/apps/app_queue.c
    team/mmichelson/queue_bugbug/apps/app_stack.c
    team/mmichelson/queue_bugbug/apps/app_voicemail.c
    team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_announce.c
    team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_record.c
    team/mmichelson/queue_bugbug/apps/confbridge/conf_config_parser.c
    team/mmichelson/queue_bugbug/apps/confbridge/confbridge_manager.c
    team/mmichelson/queue_bugbug/bridges/bridge_holding.c
    team/mmichelson/queue_bugbug/bridges/bridge_native_rtp.c
    team/mmichelson/queue_bugbug/bridges/bridge_softmix.c
    team/mmichelson/queue_bugbug/cel/cel_custom.c
    team/mmichelson/queue_bugbug/cel/cel_manager.c
    team/mmichelson/queue_bugbug/cel/cel_odbc.c
    team/mmichelson/queue_bugbug/cel/cel_pgsql.c
    team/mmichelson/queue_bugbug/cel/cel_radius.c
    team/mmichelson/queue_bugbug/cel/cel_sqlite3_custom.c
    team/mmichelson/queue_bugbug/cel/cel_tds.c
    team/mmichelson/queue_bugbug/channels/chan_bridge_media.c
    team/mmichelson/queue_bugbug/channels/chan_dahdi.c
    team/mmichelson/queue_bugbug/channels/chan_iax2.c
    team/mmichelson/queue_bugbug/channels/chan_mgcp.c
    team/mmichelson/queue_bugbug/channels/chan_misdn.c
    team/mmichelson/queue_bugbug/channels/chan_sip.c
    team/mmichelson/queue_bugbug/channels/chan_skinny.c
    team/mmichelson/queue_bugbug/channels/chan_unistim.c
    team/mmichelson/queue_bugbug/channels/chan_vpb.cc
    team/mmichelson/queue_bugbug/channels/sig_analog.c
    team/mmichelson/queue_bugbug/channels/sig_pri.c
    team/mmichelson/queue_bugbug/channels/sig_pri.h
    team/mmichelson/queue_bugbug/configs/features.conf.sample
    team/mmichelson/queue_bugbug/formats/format_wav_gsm.c
    team/mmichelson/queue_bugbug/funcs/func_frame_trace.c
    team/mmichelson/queue_bugbug/funcs/func_global.c
    team/mmichelson/queue_bugbug/funcs/func_presencestate.c
    team/mmichelson/queue_bugbug/funcs/func_strings.c
    team/mmichelson/queue_bugbug/include/asterisk/_private.h
    team/mmichelson/queue_bugbug/include/asterisk/app.h
    team/mmichelson/queue_bugbug/include/asterisk/astobj2.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge_basic.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge_channel.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge_channel_internal.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge_features.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge_internal.h
    team/mmichelson/queue_bugbug/include/asterisk/bridge_roles.h
    team/mmichelson/queue_bugbug/include/asterisk/cel.h
    team/mmichelson/queue_bugbug/include/asterisk/channel.h
    team/mmichelson/queue_bugbug/include/asterisk/core_unreal.h
    team/mmichelson/queue_bugbug/include/asterisk/devicestate.h
    team/mmichelson/queue_bugbug/include/asterisk/doxygen/architecture.h
    team/mmichelson/queue_bugbug/include/asterisk/event.h
    team/mmichelson/queue_bugbug/include/asterisk/event_defs.h
    team/mmichelson/queue_bugbug/include/asterisk/frame.h
    team/mmichelson/queue_bugbug/include/asterisk/lock.h
    team/mmichelson/queue_bugbug/include/asterisk/manager.h
    team/mmichelson/queue_bugbug/include/asterisk/options.h
    team/mmichelson/queue_bugbug/include/asterisk/parking.h
    team/mmichelson/queue_bugbug/include/asterisk/security_events_defs.h
    team/mmichelson/queue_bugbug/include/asterisk/stasis.h
    team/mmichelson/queue_bugbug/include/asterisk/stasis_app.h
    team/mmichelson/queue_bugbug/include/asterisk/stasis_app_impl.h
    team/mmichelson/queue_bugbug/include/asterisk/stasis_app_recording.h
    team/mmichelson/queue_bugbug/include/asterisk/utils.h
    team/mmichelson/queue_bugbug/main/app.c
    team/mmichelson/queue_bugbug/main/asterisk.c
    team/mmichelson/queue_bugbug/main/autoservice.c
    team/mmichelson/queue_bugbug/main/bridge.c
    team/mmichelson/queue_bugbug/main/bridge_basic.c
    team/mmichelson/queue_bugbug/main/bridge_channel.c
    team/mmichelson/queue_bugbug/main/bridge_roles.c
    team/mmichelson/queue_bugbug/main/ccss.c
    team/mmichelson/queue_bugbug/main/cdr.c
    team/mmichelson/queue_bugbug/main/cel.c
    team/mmichelson/queue_bugbug/main/channel.c
    team/mmichelson/queue_bugbug/main/channel_internal_api.c
    team/mmichelson/queue_bugbug/main/cli.c
    team/mmichelson/queue_bugbug/main/config_options.c
    team/mmichelson/queue_bugbug/main/core_unreal.c
    team/mmichelson/queue_bugbug/main/data.c
    team/mmichelson/queue_bugbug/main/db.c
    team/mmichelson/queue_bugbug/main/devicestate.c
    team/mmichelson/queue_bugbug/main/event.c
    team/mmichelson/queue_bugbug/main/features.c
    team/mmichelson/queue_bugbug/main/file.c
    team/mmichelson/queue_bugbug/main/format.c
    team/mmichelson/queue_bugbug/main/hashtab.c
    team/mmichelson/queue_bugbug/main/indications.c
    team/mmichelson/queue_bugbug/main/loader.c
    team/mmichelson/queue_bugbug/main/manager.c
    team/mmichelson/queue_bugbug/main/manager_bridges.c
    team/mmichelson/queue_bugbug/main/manager_channels.c
    team/mmichelson/queue_bugbug/main/message.c
    team/mmichelson/queue_bugbug/main/parking.c
    team/mmichelson/queue_bugbug/main/pbx.c
    team/mmichelson/queue_bugbug/main/pickup.c
    team/mmichelson/queue_bugbug/main/presencestate.c
    team/mmichelson/queue_bugbug/main/rtp_engine.c
    team/mmichelson/queue_bugbug/main/security_events.c
    team/mmichelson/queue_bugbug/main/sounds_index.c
    team/mmichelson/queue_bugbug/main/stasis.c
    team/mmichelson/queue_bugbug/main/stasis_bridges.c
    team/mmichelson/queue_bugbug/main/stasis_cache.c
    team/mmichelson/queue_bugbug/main/stasis_cache_pattern.c
    team/mmichelson/queue_bugbug/main/stasis_channels.c
    team/mmichelson/queue_bugbug/main/utils.c
    team/mmichelson/queue_bugbug/main/xmldoc.c
    team/mmichelson/queue_bugbug/pbx/pbx_dundi.c
    team/mmichelson/queue_bugbug/pbx/pbx_loopback.c
    team/mmichelson/queue_bugbug/res/ari/resource_asterisk.c
    team/mmichelson/queue_bugbug/res/ari/resource_bridges.c
    team/mmichelson/queue_bugbug/res/ari/resource_bridges.h
    team/mmichelson/queue_bugbug/res/ari/resource_recordings.c
    team/mmichelson/queue_bugbug/res/ari/resource_recordings.h
    team/mmichelson/queue_bugbug/res/parking/parking_applications.c
    team/mmichelson/queue_bugbug/res/parking/parking_bridge.c
    team/mmichelson/queue_bugbug/res/parking/parking_bridge_features.c
    team/mmichelson/queue_bugbug/res/parking/parking_manager.c
    team/mmichelson/queue_bugbug/res/parking/parking_ui.c
    team/mmichelson/queue_bugbug/res/parking/res_parking.h
    team/mmichelson/queue_bugbug/res/res_ari_bridges.c
    team/mmichelson/queue_bugbug/res/res_ari_recordings.c
    team/mmichelson/queue_bugbug/res/res_corosync.c
    team/mmichelson/queue_bugbug/res/res_jabber.c
    team/mmichelson/queue_bugbug/res/res_parking.c
    team/mmichelson/queue_bugbug/res/res_pjsip.c
    team/mmichelson/queue_bugbug/res/res_pjsip/config_system.c
    team/mmichelson/queue_bugbug/res/res_pjsip/include/res_pjsip_private.h
    team/mmichelson/queue_bugbug/res/res_pjsip_exten_state.c
    team/mmichelson/queue_bugbug/res/res_pjsip_messaging.c
    team/mmichelson/queue_bugbug/res/res_pjsip_notify.c
    team/mmichelson/queue_bugbug/res/res_pjsip_outbound_registration.c
    team/mmichelson/queue_bugbug/res/res_pjsip_registrar.c
    team/mmichelson/queue_bugbug/res/res_rtp_asterisk.c
    team/mmichelson/queue_bugbug/res/res_security_log.c
    team/mmichelson/queue_bugbug/res/res_stasis.c
    team/mmichelson/queue_bugbug/res/res_stasis_playback.c
    team/mmichelson/queue_bugbug/res/res_stasis_recording.c
    team/mmichelson/queue_bugbug/res/res_xmpp.c
    team/mmichelson/queue_bugbug/res/stasis/control.c
    team/mmichelson/queue_bugbug/res/stasis/control.h
    team/mmichelson/queue_bugbug/rest-api/api-docs/bridges.json
    team/mmichelson/queue_bugbug/rest-api/api-docs/recordings.json
    team/mmichelson/queue_bugbug/tests/test_abstract_jb.c
    team/mmichelson/queue_bugbug/tests/test_cdr.c
    team/mmichelson/queue_bugbug/tests/test_cel.c
    team/mmichelson/queue_bugbug/tests/test_event.c
    team/mmichelson/queue_bugbug/tests/test_hashtab_thrash.c
    team/mmichelson/queue_bugbug/tests/test_jitterbuf.c
    team/mmichelson/queue_bugbug/tests/test_stasis.c
    team/mmichelson/queue_bugbug/tests/test_voicemail_api.c
    team/mmichelson/queue_bugbug/utils/extconf.c

Propchange: team/mmichelson/queue_bugbug/
------------------------------------------------------------------------------
    automerge = *

Propchange: team/mmichelson/queue_bugbug/
------------------------------------------------------------------------------
--- branch-11-blocked (original)
+++ branch-11-blocked Mon Aug 19 09:27:33 2013
@@ -1,1 +1,1 @@
-/branches/11:373240,375247,375702,385356,395020
+/branches/11:373240,375247,375702,385356,395020,396441

Propchange: team/mmichelson/queue_bugbug/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.

Propchange: team/mmichelson/queue_bugbug/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Aug 19 09:27:33 2013
@@ -1,1 +1,1 @@
-/trunk:1-396132
+/trunk:1-396920

Modified: team/mmichelson/queue_bugbug/UPGRADE-11.txt
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/UPGRADE-11.txt?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/UPGRADE-11.txt (original)
+++ team/mmichelson/queue_bugbug/UPGRADE-11.txt Mon Aug 19 09:27:33 2013
@@ -19,6 +19,11 @@
 === UPGRADE-10.txt -- Upgrade info for 1.8 to 10
 ===
 ===========================================================
+From 11.5 to 11.6:
+* res_agi will now properly indicate if there was an error in streaming an
+  audio file.  The result code will be -1 and the result returned from the
+  the function will be RESULT_FAILURE instead of the prior behavior of always
+  returning RESULT_SUCCESS even if there was an error.
 
 From 11.4 to 11.5:
 * The default settings for chan_sip are now overriden properly by the general

Modified: team/mmichelson/queue_bugbug/apps/app_bridgewait.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_bridgewait.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_bridgewait.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_bridgewait.c Mon Aug 19 09:27:33 2013
@@ -349,10 +349,16 @@
 		return wrapper;
 	}
 
+	/*
+	 * Holding bridges can allow local channel move/swap
+	 * optimization to the bridge.  However, we cannot allow it for
+	 * this holding bridge because the call will lose the channel
+	 * roles and dialplan location as a result.
+	 */
 	bridge = ast_bridge_base_new(AST_BRIDGE_CAPABILITY_HOLDING,
 		AST_BRIDGE_FLAG_MERGE_INHIBIT_TO | AST_BRIDGE_FLAG_MERGE_INHIBIT_FROM
-		| AST_BRIDGE_FLAG_SWAP_INHIBIT_FROM | AST_BRIDGE_FLAG_TRANSFER_PROHIBITED
-		| AST_BRIDGE_FLAG_DISSOLVE_EMPTY);
+		| AST_BRIDGE_FLAG_SWAP_INHIBIT_TO | AST_BRIDGE_FLAG_SWAP_INHIBIT_FROM
+		| AST_BRIDGE_FLAG_TRANSFER_PROHIBITED | AST_BRIDGE_FLAG_DISSOLVE_EMPTY);
 
 	if (!bridge) {
 		return NULL;

Modified: team/mmichelson/queue_bugbug/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_confbridge.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_confbridge.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_confbridge.c Mon Aug 19 09:27:33 2013
@@ -1587,6 +1587,8 @@
 	/* Set if DTMF should pass through for this user or not */
 	if (ast_test_flag(&user.u_profile, USER_OPT_DTMF_PASS)) {
 		user.features.dtmf_passthrough = 1;
+	} else {
+		user.features.dtmf_passthrough = 0;
 	}
 
 	/* Set dsp threshold values if present */

Modified: team/mmichelson/queue_bugbug/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_meetme.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_meetme.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_meetme.c Mon Aug 19 09:27:33 2013
@@ -1167,7 +1167,7 @@
 	STASIS_MESSAGE_TYPE_INIT(meetme_talk_request_type);
 
 	meetme_event_message_router = stasis_message_router_create(
-		ast_channel_cache());
+		ast_channel_topic_all_cached());
 
 	if (!meetme_event_message_router) {
 		meetme_stasis_cleanup();

Modified: team/mmichelson/queue_bugbug/apps/app_minivm.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_minivm.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_minivm.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_minivm.c Mon Aug 19 09:27:33 2013
@@ -1674,7 +1674,7 @@
 				ast_channel_setoption(chan, AST_OPTION_RXGAIN, &record_gain, sizeof(record_gain), 0);
 			if (ast_test_flag(vmu, MVM_OPERATOR))
 				canceldtmf = "0";
-			cmd = ast_play_and_record_full(chan, playfile, recordfile, maxtime, fmt, duration, sound_duration, global_silencethreshold, global_maxsilence, unlockdir, acceptdtmf, canceldtmf, 0, AST_RECORD_IF_EXISTS_OVERWRITE);
+			cmd = ast_play_and_record_full(chan, playfile, recordfile, maxtime, fmt, duration, sound_duration, 0, global_silencethreshold, global_maxsilence, unlockdir, acceptdtmf, canceldtmf, 0, AST_RECORD_IF_EXISTS_OVERWRITE);
 			if (record_gain)
 				ast_channel_setoption(chan, AST_OPTION_RXGAIN, &zero_gain, sizeof(zero_gain), 0);
 			if (cmd == -1) /* User has hung up, no options to give */

Modified: team/mmichelson/queue_bugbug/apps/app_playback.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_playback.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_playback.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_playback.c Mon Aug 19 09:27:33 2013
@@ -220,6 +220,10 @@
 		s = x + 1;
 	ast_debug(2, "value is <%s>\n", s);
 	n = ast_var_assign("SAY", s);
+	if (!n) {
+		ast_log(LOG_ERROR, "Memory allocation error in do_say\n");
+		return -1;
+	}
 	AST_LIST_INSERT_HEAD(&head, n, entries);
 
 	/* scan the body, one piece at a time */

Modified: team/mmichelson/queue_bugbug/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_queue.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_queue.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_queue.c Mon Aug 19 09:27:33 2013
@@ -96,7 +96,6 @@
 #include "asterisk/astdb.h"
 #include "asterisk/devicestate.h"
 #include "asterisk/stringfields.h"
-#include "asterisk/event.h"
 #include "asterisk/astobj2.h"
 #include "asterisk/strings.h"
 #include "asterisk/global_datastores.h"
@@ -2072,7 +2071,8 @@
 }
 
 /*!
- * \internal \brief Determine if a queue member is available
+ * \internal
+ * \brief Determine if a queue member is available
  * \retval 1 if the member is available
  * \retval 0 if the member is not available
  */
@@ -4590,10 +4590,10 @@
 						case AST_CONTROL_BUSY:
 							ast_verb(3, "%s is busy\n", ochan_name);
 							ast_channel_publish_dial(qe->chan, o->chan, on, "BUSY");
-							do_hang(o);
 							endtime = (long) time(NULL);
 							endtime -= starttime;
 							rna(endtime * 1000, qe, o->chan, on, membername, qe->parent->autopausebusy);
+							do_hang(o);
 							if (qe->parent->strategy != QUEUE_STRATEGY_RINGALL) {
 								if (qe->parent->timeoutrestart) {
 									start_time_tv = ast_tvnow();

Modified: team/mmichelson/queue_bugbug/apps/app_stack.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_stack.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_stack.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_stack.c Mon Aug 19 09:27:33 2013
@@ -273,8 +273,9 @@
 	}
 
 	if (!found) {
-		variables = ast_var_assign(var, "");
-		AST_LIST_INSERT_HEAD(&frame->varshead, variables, entries);
+		if ((variables = ast_var_assign(var, ""))) {
+			AST_LIST_INSERT_HEAD(&frame->varshead, variables, entries);
+		}
 		pbx_builtin_pushvar_helper(chan, var, value);
 	} else {
 		pbx_builtin_setvar_helper(chan, var, value);

Modified: team/mmichelson/queue_bugbug/apps/app_voicemail.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/app_voicemail.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/app_voicemail.c (original)
+++ team/mmichelson/queue_bugbug/apps/app_voicemail.c Mon Aug 19 09:27:33 2013
@@ -131,7 +131,6 @@
 #include "asterisk/strings.h"
 #include "asterisk/smdi.h"
 #include "asterisk/astobj2.h"
-#include "asterisk/event.h"
 #include "asterisk/taskprocessor.h"
 #include "asterisk/test.h"
 
@@ -14682,7 +14681,7 @@
 				ast_channel_setoption(chan, AST_OPTION_RXGAIN, &record_gain, sizeof(record_gain), 0);
 			if (ast_test_flag(vmu, VM_OPERATOR))
 				canceldtmf = "0";
-			cmd = ast_play_and_record_full(chan, playfile, tempfile, maxtime, fmt, duration, sound_duration, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf, 0, AST_RECORD_IF_EXISTS_OVERWRITE);
+			cmd = ast_play_and_record_full(chan, playfile, tempfile, maxtime, fmt, duration, sound_duration, 0, silencethreshold, maxsilence, unlockdir, acceptdtmf, canceldtmf, 0, AST_RECORD_IF_EXISTS_OVERWRITE);
 			if (strchr(canceldtmf, cmd)) {
 			/* need this flag here to distinguish between pressing '0' during message recording or after */
 				canceleddtmf = 1;

Modified: team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_announce.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_announce.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_announce.c (original)
+++ team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_announce.c Mon Aug 19 09:27:33 2013
@@ -134,7 +134,7 @@
 	.send_text = ast_unreal_sendtext,
 	.queryoption = ast_unreal_queryoption,
 	.setoption = ast_unreal_setoption,
-	.properties = AST_CHAN_TP_ANNOUNCER,
+	.properties = AST_CHAN_TP_INTERNAL,
 };
 
 struct ast_channel_tech *conf_announce_get_tech(void)

Modified: team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_record.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_record.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_record.c (original)
+++ team/mmichelson/queue_bugbug/apps/confbridge/conf_chan_record.c Mon Aug 19 09:27:33 2013
@@ -86,7 +86,7 @@
 	.call = rec_call,
 	.read = rec_read,
 	.write = rec_write,
-	.properties = AST_CHAN_TP_RECORDER,
+	.properties = AST_CHAN_TP_INTERNAL,
 };
 
 struct ast_channel_tech *conf_record_get_tech(void)

Modified: team/mmichelson/queue_bugbug/apps/confbridge/conf_config_parser.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/confbridge/conf_config_parser.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/confbridge/conf_config_parser.c (original)
+++ team/mmichelson/queue_bugbug/apps/confbridge/conf_config_parser.c Mon Aug 19 09:27:33 2013
@@ -123,8 +123,8 @@
 					<synopsis>Apply a denoise filter to the audio before mixing</synopsis>
 					<description><para>Sets whether or not a denoise filter should be applied
 					to the audio before mixing or not.  Off by default. Requires
-					codec_speex to be built and installed.  Do not confuse this option
-					with drop_silence.  Denoise is useful if there is a lot of background
+					<literal>codec_speex</literal> to be built and installed.  Do not confuse this option
+					with <replaceable>drop_silence</replaceable>.  Denoise is useful if there is a lot of background
 					noise for a user as it attempts to remove the noise while preserving
 					the speech.  This option does NOT remove silence from being mixed into
 					the conference and does come at the cost of a slight performance hit.
@@ -158,7 +158,7 @@
 						during mid sentence.
 					</para>
 					<para>
-						2. The drop_silence option depends on this value to
+						2. The <replaceable>drop_silence</replaceable> option depends on this value to
 						determine when the user's audio should begin to be
 						dropped from the conference bridge after the user
 						stops talking.  If this value is set too low the user's
@@ -200,7 +200,7 @@
 						room noise.
 						</para>
 						<para>
-						3. The drop_silence option depends on this value to determine
+						3. The <replaceable>drop_silence</replaceable> option depends on this value to determine
 						when the user's audio should be mixed into the bridge
 						after periods of silence.  If this value is too loose
 						the beginning of a user's speech will get cut off as they
@@ -274,15 +274,15 @@
 						Records the conference call starting when the first user
 						enters the room, and ending when the last user exits the room.
 						The default recorded filename is
-						<filename>'confbridge-${name of conference bridge}-${start time}.wav</filename>
+						<filename>'confbridge-${name of conference bridge}-${start time}.wav'</filename>
 						and the default format is 8khz slinear.  This file will be
-						located in the configured monitoring directory in asterisk.conf.
+						located in the configured monitoring directory in <filename>asterisk.conf</filename>.
 					</para></description>
 				</configOption>
 				<configOption name="record_file" default="confbridge-${name of conference bridge}-${start time}.wav">
 					<synopsis>The filename of the conference recording</synopsis>
 					<description><para>
-						When record_conference is set to yes, the specific name of the
+						When <replaceable>record_conference</replaceable> is set to yes, the specific name of the
 						record file can be set using this option.  Note that since multiple
 						conferences may use the same bridge profile, this may cause issues
 						depending on the configuration.  It is recommended to only use this
@@ -295,9 +295,9 @@
 				<configOption name="record_file_append" default="yes">
 					<synopsis>Append record file when starting/stopping on same conference recording</synopsis>
 					<description><para>
-						When record_file_append is set to yes, stopping and starting recording on a
+						When <replaceable>record_file_append</replaceable> is set to yes, stopping and starting recording on a
 						conference adds the new portion to end of current record_file. When this is
-						set to no, a new record_file is generated every time you start then stop recording
+						set to no, a new <replaceable>record_file</replaceable> is generated every time you start then stop recording
 						on a conference.
 					</para></description>
 				</configOption>
@@ -306,7 +306,7 @@
 					<description><para>
 						Sets how confbridge handles video distribution to the conference participants.
 						Note that participants wanting to view and be the source of a video feed
-						_MUST_ be sharing the same video codec.  Also, using video in conjunction with
+						<emphasis>MUST</emphasis> be sharing the same video codec.  Also, using video in conjunction with
 						with the jitterbuffer currently results in the audio being slightly out of sync
 						with the video.  This is a result of the jitterbuffer only working on the audio
 						stream.  It is recommended to disable the jitterbuffer when video is used.</para>
@@ -395,7 +395,7 @@
 			<configObject name="menu">
 				<synopsis>A conference user menu</synopsis>
 				<description>
-					<para>Conference users, as defined by a <literal>conf_user</literal>,
+					<para>Conference users, as defined by a <replaceable>conf_user</replaceable>,
 					can have a DTMF menu assigned to their profile when they enter the
 					<literal>ConfBridge</literal> application.</para>
 				</description>
@@ -412,7 +412,7 @@
 				</configOption>
 				<configOption name="^[0-9A-D*#]+$">
 					<synopsis>DTMF sequences to assign various confbridge actions to</synopsis>
-					<description><para>--- ConfBridge Menu Options ---</para>
+					<description>
 					<para>The ConfBridge application also has the ability to apply custom DTMF menus to
 					each channel using the application.  Like the User and Bridge profiles a menu
 					is passed in to ConfBridge as an argument in the dialplan.</para>
@@ -1922,7 +1922,7 @@
 	/* This option should only be used with the CONFBRIDGE dialplan function */
 	aco_option_register_custom(&cfg_info, "template", ACO_EXACT, user_types, NULL, user_template_handler, 0);
 
-/* BUGBUG need a user supplied bridge merge_priority to merge ConfBridges (default = 1, range 1-INT_MAX) */
+/* XXX ASTERISK-21271 need a user supplied bridge merge_priority to merge ConfBridges (default = 1, range 1-INT_MAX) */
 	/* Bridge options */
 	aco_option_register(&cfg_info, "type", ACO_EXACT, bridge_types, NULL, OPT_NOOP_T, 0, 0);
 	aco_option_register(&cfg_info, "jitterbuffer", ACO_EXACT, bridge_types, "no", OPT_BOOLFLAG_T, 1, FLDSET(struct bridge_profile, flags), USER_OPT_JITTERBUFFER);

Modified: team/mmichelson/queue_bugbug/apps/confbridge/confbridge_manager.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/apps/confbridge/confbridge_manager.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/apps/confbridge/confbridge_manager.c (original)
+++ team/mmichelson/queue_bugbug/apps/confbridge/confbridge_manager.c Mon Aug 19 09:27:33 2013
@@ -200,7 +200,7 @@
 	ast_assert(blob != NULL);
 	ast_assert(event != NULL);
 
-	bridge_text = ast_manager_build_bridge_state_string(blob->bridge, "");
+	bridge_text = ast_manager_build_bridge_state_string(blob->bridge);
 	if (!bridge_text) {
 		return;
 	}

Modified: team/mmichelson/queue_bugbug/bridges/bridge_holding.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/bridges/bridge_holding.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/bridges/bridge_holding.c (original)
+++ team/mmichelson/queue_bugbug/bridges/bridge_holding.c Mon Aug 19 09:27:33 2013
@@ -81,7 +81,7 @@
 		ast_moh_stop(bridge_channel->chan);
 		break;
 	case IDLE_MODE_RINGING:
-		ast_indicate(bridge_channel->chan, -1);
+		ast_bridge_channel_queue_control_data(bridge_channel, -1, NULL, 0);
 		break;
 	case IDLE_MODE_NONE:
 		break;
@@ -124,7 +124,7 @@
 		ast_moh_start(bridge_channel->chan, ast_strlen_zero(moh_class) ? NULL : moh_class, NULL);
 		break;
 	case IDLE_MODE_RINGING:
-		ast_indicate(bridge_channel->chan, AST_CONTROL_RINGING);
+		ast_bridge_channel_queue_control_data(bridge_channel, AST_CONTROL_RINGING, NULL, 0);
 		break;
 	case IDLE_MODE_NONE:
 		break;
@@ -302,6 +302,44 @@
 	return 0;
 }
 
+static void holding_bridge_suspend(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel)
+{
+	struct holding_channel *hc = bridge_channel ? bridge_channel->tech_pvt : NULL;
+
+	if (!hc) {
+		return;
+	}
+
+	if (!ast_test_flag(&hc->holding_roles, HOLDING_ROLE_PARTICIPANT)) {
+		return;
+	}
+
+	participant_stop_hold_audio(bridge_channel);
+}
+
+static void holding_bridge_unsuspend(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel)
+{
+	struct holding_channel *hc = bridge_channel ? bridge_channel->tech_pvt : NULL;
+	struct ast_bridge_channel *announcer_channel = bridge->tech_pvt;
+
+	if (!hc) {
+		return;
+	}
+
+	/* If the bridge channel being unsuspended is not a participant, no need to do anything. */
+	if (!ast_test_flag(&hc->holding_roles, HOLDING_ROLE_PARTICIPANT)) {
+		return;
+	}
+
+	/* If there is currently an announcer channel in the bridge, there is also no need to do anything. */
+	if (announcer_channel) {
+		return;
+	}
+
+	/* Otherwise we need to resume the entertainment. */
+	participant_start_hold_audio(bridge_channel);
+}
+
 static struct ast_bridge_technology holding_bridge = {
 	.name = "holding_bridge",
 	.capabilities = AST_BRIDGE_CAPABILITY_HOLDING,
@@ -309,6 +347,8 @@
 	.write = holding_bridge_write,
 	.join = holding_bridge_join,
 	.leave = holding_bridge_leave,
+	.suspend = holding_bridge_suspend,
+	.unsuspend = holding_bridge_unsuspend,
 };
 
 static int unload_module(void)

Modified: team/mmichelson/queue_bugbug/bridges/bridge_native_rtp.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/bridges/bridge_native_rtp.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/bridges/bridge_native_rtp.c (original)
+++ team/mmichelson/queue_bugbug/bridges/bridge_native_rtp.c Mon Aug 19 09:27:33 2013
@@ -57,21 +57,21 @@
 	struct ast_rtp_glue **glue1, struct ast_rtp_instance **instance0, struct ast_rtp_instance **instance1,
 	struct ast_rtp_instance **vinstance0, struct ast_rtp_instance **vinstance1)
 {
-	enum ast_rtp_glue_result audio_glue0_res = AST_RTP_GLUE_RESULT_FORBID, video_glue0_res = AST_RTP_GLUE_RESULT_FORBID;
-	enum ast_rtp_glue_result audio_glue1_res = AST_RTP_GLUE_RESULT_FORBID, video_glue1_res = AST_RTP_GLUE_RESULT_FORBID;
+	enum ast_rtp_glue_result audio_glue0_res;
+	enum ast_rtp_glue_result video_glue0_res;
+	enum ast_rtp_glue_result audio_glue1_res;
+	enum ast_rtp_glue_result video_glue1_res;
 
 	if (!(*glue0 = ast_rtp_instance_get_glue(ast_channel_tech(c0)->type)) ||
-		(c1 && !(*glue1 = ast_rtp_instance_get_glue(ast_channel_tech(c1)->type)))) {
+		!(*glue1 = ast_rtp_instance_get_glue(ast_channel_tech(c1)->type))) {
 		return AST_RTP_GLUE_RESULT_FORBID;
 	}
 
 	audio_glue0_res = (*glue0)->get_rtp_info(c0, instance0);
 	video_glue0_res = (*glue0)->get_vrtp_info ? (*glue0)->get_vrtp_info(c0, vinstance0) : AST_RTP_GLUE_RESULT_FORBID;
 
-	if (c1) {
-		audio_glue1_res = (*glue1)->get_rtp_info(c1, instance1);
-		video_glue1_res = (*glue1)->get_vrtp_info ? (*glue1)->get_vrtp_info(c1, vinstance1) : AST_RTP_GLUE_RESULT_FORBID;
-	}
+	audio_glue1_res = (*glue1)->get_rtp_info(c1, instance1);
+	video_glue1_res = (*glue1)->get_vrtp_info ? (*glue1)->get_vrtp_info(c1, vinstance1) : AST_RTP_GLUE_RESULT_FORBID;
 
 	/* Apply any limitations on direct media bridging that may be present */
 	if (audio_glue0_res == audio_glue1_res && audio_glue1_res == AST_RTP_GLUE_RESULT_REMOTE) {
@@ -82,7 +82,7 @@
 			audio_glue0_res = audio_glue1_res = AST_RTP_GLUE_RESULT_LOCAL;
 		}
 	}
-	if (c1 && video_glue0_res == video_glue1_res && video_glue1_res == AST_RTP_GLUE_RESULT_REMOTE) {
+	if (video_glue0_res == video_glue1_res && video_glue1_res == AST_RTP_GLUE_RESULT_REMOTE) {
 		if ((*glue0)->allow_vrtp_remote && !((*glue0)->allow_vrtp_remote(c0, *instance1))) {
 			/* if the allow_vrtp_remote indicates that remote isn't allowed, revert to local bridge */
 			video_glue0_res = video_glue1_res = AST_RTP_GLUE_RESULT_LOCAL;
@@ -92,15 +92,20 @@
 	}
 
 	/* If we are carrying video, and both sides are not going to remotely bridge... fail the native bridge */
-	if (video_glue0_res != AST_RTP_GLUE_RESULT_FORBID && (audio_glue0_res != AST_RTP_GLUE_RESULT_REMOTE || video_glue0_res != AST_RTP_GLUE_RESULT_REMOTE)) {
+	if (video_glue0_res != AST_RTP_GLUE_RESULT_FORBID
+		&& (audio_glue0_res != AST_RTP_GLUE_RESULT_REMOTE
+			|| video_glue0_res != AST_RTP_GLUE_RESULT_REMOTE)) {
 		audio_glue0_res = AST_RTP_GLUE_RESULT_FORBID;
 	}
-	if (c1 && video_glue1_res != AST_RTP_GLUE_RESULT_FORBID && (audio_glue1_res != AST_RTP_GLUE_RESULT_REMOTE || video_glue1_res != AST_RTP_GLUE_RESULT_REMOTE)) {
+	if (video_glue1_res != AST_RTP_GLUE_RESULT_FORBID
+		&& (audio_glue1_res != AST_RTP_GLUE_RESULT_REMOTE
+			|| video_glue1_res != AST_RTP_GLUE_RESULT_REMOTE)) {
 		audio_glue1_res = AST_RTP_GLUE_RESULT_FORBID;
 	}
 
 	/* If any sort of bridge is forbidden just completely bail out and go back to generic bridging */
-	if (audio_glue0_res == AST_RTP_GLUE_RESULT_FORBID || (c1 && audio_glue1_res == AST_RTP_GLUE_RESULT_FORBID)) {
+	if (audio_glue0_res == AST_RTP_GLUE_RESULT_FORBID
+		|| audio_glue1_res == AST_RTP_GLUE_RESULT_FORBID) {
 		return AST_RTP_GLUE_RESULT_FORBID;
 	}
 
@@ -172,7 +177,7 @@
 		return;
 	}
 
-	native_type = native_rtp_bridge_get(c0->chan, c1 ? c1->chan : NULL, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
+	native_type = native_rtp_bridge_get(c0->chan, c1->chan, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
 
 	switch (native_type) {
 	case AST_RTP_GLUE_RESULT_LOCAL:

Modified: team/mmichelson/queue_bugbug/bridges/bridge_softmix.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/bridges/bridge_softmix.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/bridges/bridge_softmix.c (original)
+++ team/mmichelson/queue_bugbug/bridges/bridge_softmix.c Mon Aug 19 09:27:33 2013
@@ -594,8 +594,10 @@
  */
 static int softmix_bridge_write_control(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame)
 {
-/* BUGBUG need to look at channel roles to determine what to do with control frame. */
-	/*! \todo BUGBUG softmix_bridge_write_control() not written */
+	/*
+	 * XXX Softmix needs to use channel roles to determine what to
+	 * do with control frames.
+	 */
 	return 0;
 }
 
@@ -622,6 +624,11 @@
 		return 0;
 	}
 
+	/*
+	 * XXX Softmix needs to use channel roles to determine who gets
+	 * what frame.  Possible roles: announcer, recorder, agent,
+	 * supervisor.
+	 */
 	switch (frame->frametype) {
 	case AST_FRAME_NULL:
 		/* "Accept" the frame and discard it. */
@@ -820,6 +827,10 @@
 		goto softmix_cleanup;
 	}
 
+	/*
+	 * XXX Softmix needs to use channel roles to determine who gets
+	 * what audio mixed.
+	 */
 	while (!softmix_data->stop && bridge->num_active) {
 		struct ast_bridge_channel *bridge_channel;
 		int timeout = -1;

Modified: team/mmichelson/queue_bugbug/cel/cel_custom.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/cel/cel_custom.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/cel/cel_custom.c (original)
+++ team/mmichelson/queue_bugbug/cel/cel_custom.c Mon Aug 19 09:27:33 2013
@@ -64,7 +64,7 @@
 	AST_RWLIST_ENTRY(cel_config) list;
 };
 
-static struct ast_event_sub *event_sub = NULL;
+#define CUSTOM_BACKEND_NAME "CEL Custom CSV Logging"
 
 static AST_RWLIST_HEAD_STATIC(sinks, cel_config);
 
@@ -116,7 +116,7 @@
 	return res;
 }
 
-static void custom_log(const struct ast_event *event, void *userdata)
+static void custom_log(struct ast_event *event)
 {
 	struct ast_channel *dummy;
 	struct ast_str *str;
@@ -167,19 +167,15 @@
 
 static int unload_module(void)
 {
-	if (event_sub) {
-		event_sub = ast_event_unsubscribe(event_sub);
-	}
 
 	if (AST_RWLIST_WRLOCK(&sinks)) {
-		event_sub = ast_event_subscribe(AST_EVENT_CEL, custom_log, "CEL Custom CSV Logging",
-			NULL, AST_EVENT_IE_END);
 		ast_log(LOG_ERROR, "Unable to lock sink list.  Unload failed.\n");
 		return -1;
 	}
 
 	free_config();
 	AST_RWLIST_UNLOCK(&sinks);
+	ast_cel_backend_unregister(CUSTOM_BACKEND_NAME);
 	return 0;
 }
 
@@ -193,8 +189,9 @@
 	load_config();
 	AST_RWLIST_UNLOCK(&sinks);
 
-	event_sub = ast_event_subscribe(AST_EVENT_CEL, custom_log, "CEL Custom CSV Logging",
-		NULL, AST_EVENT_IE_END);
+	if (ast_cel_backend_register(CUSTOM_BACKEND_NAME, custom_log)) {
+		return AST_MODULE_LOAD_FAILURE;
+	}
 	return AST_MODULE_LOAD_SUCCESS;
 }
 

Modified: team/mmichelson/queue_bugbug/cel/cel_manager.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/cel/cel_manager.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/cel/cel_manager.c (original)
+++ team/mmichelson/queue_bugbug/cel/cel_manager.c Mon Aug 19 09:27:33 2013
@@ -57,12 +57,12 @@
 /*! \brief show_user_def is off by default */
 #define CEL_SHOW_USERDEF_DEFAULT	0
 
+#define MANAGER_BACKEND_NAME "Manager Event Logging"
+
 /*! TRUE if we should set the EventName header to USER_DEFINED on user events. */
 static unsigned char cel_show_user_def;
 
-static struct ast_event_sub *event_sub;
-
-static void manager_log(const struct ast_event *event, void *userdata)
+static void manager_log(struct ast_event *event)
 {
 	struct ast_tm timeresult;
 	char start_time[80] = "";
@@ -180,12 +180,9 @@
 
 	cel_show_user_def = new_cel_show_user_def;
 	if (enablecel && !newenablecel) {
-		if (event_sub) {
-			event_sub = ast_event_unsubscribe(event_sub);
-		}
+		ast_cel_backend_unregister(MANAGER_BACKEND_NAME);
 	} else if (!enablecel && newenablecel) {
-		event_sub = ast_event_subscribe(AST_EVENT_CEL, manager_log, "Manager Event Logging", NULL, AST_EVENT_IE_END);
-		if (!event_sub) {
+		if (ast_cel_backend_register(MANAGER_BACKEND_NAME, manager_log)) {
 			ast_log(LOG_ERROR, "Unable to register Asterisk Call Manager CEL handling\n");
 		}
 	}
@@ -196,9 +193,7 @@
 
 static int unload_module(void)
 {
-	if (event_sub) {
-		event_sub = ast_event_unsubscribe(event_sub);
-	}
+	ast_cel_backend_unregister(MANAGER_BACKEND_NAME);
 	return 0;
 }
 

Modified: team/mmichelson/queue_bugbug/cel/cel_odbc.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/queue_bugbug/cel/cel_odbc.c?view=diff&rev=396921&r1=396920&r2=396921
==============================================================================
--- team/mmichelson/queue_bugbug/cel/cel_odbc.c (original)
+++ team/mmichelson/queue_bugbug/cel/cel_odbc.c Mon Aug 19 09:27:33 2013
@@ -51,7 +51,8 @@
 #include "asterisk/module.h"
 
 #define	CONFIG	"cel_odbc.conf"
-static struct ast_event_sub *event_sub = NULL;
+
+#define ODBC_BACKEND_NAME "ODBC CEL backend"
 
 /*! \brief show_user_def is off by default */
 #define CEL_SHOW_USERDEF_DEFAULT	0
@@ -367,7 +368,7 @@
 				}																\
 			} while (0)
 

[... 15476 lines stripped ...]



More information about the svn-commits mailing list