[svn-commits] dlee: branch dlee/stasis-cache-split r395671 - in /team/dlee/stasis-cache-spl...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Mon Jul 29 10:46:38 CDT 2013
Author: dlee
Date: Mon Jul 29 10:46:34 2013
New Revision: 395671
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=395671
Log:
Merged revisions 394278-395367 from http://svn.asterisk.org/svn/asterisk/trunk
Added:
team/dlee/stasis-cache-split/apps/app_agent_pool.c
- copied unchanged from r395367, trunk/apps/app_agent_pool.c
team/dlee/stasis-cache-split/channels/chan_bridge_media.c
- copied unchanged from r395367, trunk/channels/chan_bridge_media.c
team/dlee/stasis-cache-split/channels/chan_dahdi.h
- copied unchanged from r395367, trunk/channels/chan_dahdi.h
team/dlee/stasis-cache-split/channels/dahdi/
- copied from r395367, trunk/channels/dahdi/
team/dlee/stasis-cache-split/configs/safe_asterisk.conf.sample
- copied unchanged from r395367, trunk/configs/safe_asterisk.conf.sample
team/dlee/stasis-cache-split/include/asterisk/bridging_after.h
- copied unchanged from r395367, trunk/include/asterisk/bridging_after.h
team/dlee/stasis-cache-split/include/asterisk/bridging_channel.h
- copied unchanged from r395367, trunk/include/asterisk/bridging_channel.h
team/dlee/stasis-cache-split/include/asterisk/bridging_channel_internal.h
- copied unchanged from r395367, trunk/include/asterisk/bridging_channel_internal.h
team/dlee/stasis-cache-split/include/asterisk/bridging_internal.h
- copied unchanged from r395367, trunk/include/asterisk/bridging_internal.h
team/dlee/stasis-cache-split/main/bridging_after.c
- copied unchanged from r395367, trunk/main/bridging_after.c
team/dlee/stasis-cache-split/main/bridging_channel.c
- copied unchanged from r395367, trunk/main/bridging_channel.c
team/dlee/stasis-cache-split/res/res_sip/config_global.c
- copied unchanged from r395367, trunk/res/res_sip/config_global.c
team/dlee/stasis-cache-split/res/res_sip/config_system.c
- copied unchanged from r395367, trunk/res/res_sip/config_system.c
team/dlee/stasis-cache-split/res/res_sip/sip_global_headers.c
- copied unchanged from r395367, trunk/res/res_sip/sip_global_headers.c
Removed:
team/dlee/stasis-cache-split/channels/chan_agent.c
Modified:
team/dlee/stasis-cache-split/ (props changed)
team/dlee/stasis-cache-split/CHANGES
team/dlee/stasis-cache-split/Makefile
team/dlee/stasis-cache-split/UPGRADE.txt
team/dlee/stasis-cache-split/addons/chan_mobile.c
team/dlee/stasis-cache-split/apps/app_bridgewait.c
team/dlee/stasis-cache-split/apps/app_celgenuserevent.c
team/dlee/stasis-cache-split/apps/app_confbridge.c
team/dlee/stasis-cache-split/apps/app_dial.c
team/dlee/stasis-cache-split/apps/app_directed_pickup.c
team/dlee/stasis-cache-split/apps/app_meetme.c
team/dlee/stasis-cache-split/apps/app_queue.c
team/dlee/stasis-cache-split/apps/app_voicemail.c
team/dlee/stasis-cache-split/apps/confbridge/conf_chan_announce.c
team/dlee/stasis-cache-split/apps/confbridge/conf_chan_record.c
team/dlee/stasis-cache-split/apps/confbridge/confbridge_manager.c
team/dlee/stasis-cache-split/bridges/bridge_builtin_features.c
team/dlee/stasis-cache-split/bridges/bridge_builtin_interval_features.c
team/dlee/stasis-cache-split/bridges/bridge_holding.c
team/dlee/stasis-cache-split/bridges/bridge_native_rtp.c
team/dlee/stasis-cache-split/bridges/bridge_simple.c
team/dlee/stasis-cache-split/bridges/bridge_softmix.c
team/dlee/stasis-cache-split/channels/Makefile
team/dlee/stasis-cache-split/channels/chan_dahdi.c
team/dlee/stasis-cache-split/channels/chan_gulp.c
team/dlee/stasis-cache-split/channels/chan_mgcp.c
team/dlee/stasis-cache-split/channels/chan_sip.c
team/dlee/stasis-cache-split/channels/iax2/parser.c
team/dlee/stasis-cache-split/channels/sig_analog.c
team/dlee/stasis-cache-split/configs/agents.conf.sample
team/dlee/stasis-cache-split/configs/iax.conf.sample
team/dlee/stasis-cache-split/configs/indications.conf.sample
team/dlee/stasis-cache-split/configs/queues.conf.sample
team/dlee/stasis-cache-split/contrib/realtime/postgresql/realtime.sql
team/dlee/stasis-cache-split/contrib/scripts/install_prereq
team/dlee/stasis-cache-split/contrib/scripts/safe_asterisk
team/dlee/stasis-cache-split/funcs/func_channel.c
team/dlee/stasis-cache-split/funcs/func_strings.c
team/dlee/stasis-cache-split/include/asterisk/astobj2.h
team/dlee/stasis-cache-split/include/asterisk/audiohook.h
team/dlee/stasis-cache-split/include/asterisk/bridging.h
team/dlee/stasis-cache-split/include/asterisk/bridging_basic.h
team/dlee/stasis-cache-split/include/asterisk/bridging_features.h
team/dlee/stasis-cache-split/include/asterisk/bridging_roles.h
team/dlee/stasis-cache-split/include/asterisk/bridging_technology.h
team/dlee/stasis-cache-split/include/asterisk/cel.h
team/dlee/stasis-cache-split/include/asterisk/channel.h
team/dlee/stasis-cache-split/include/asterisk/config_options.h
team/dlee/stasis-cache-split/include/asterisk/core_unreal.h
team/dlee/stasis-cache-split/include/asterisk/features.h
team/dlee/stasis-cache-split/include/asterisk/features_config.h
team/dlee/stasis-cache-split/include/asterisk/logger.h
team/dlee/stasis-cache-split/include/asterisk/res_sip.h
team/dlee/stasis-cache-split/include/asterisk/res_sip_session.h
team/dlee/stasis-cache-split/include/asterisk/stasis_app.h
team/dlee/stasis-cache-split/include/asterisk/stasis_app_playback.h
team/dlee/stasis-cache-split/include/asterisk/stasis_bridging.h
team/dlee/stasis-cache-split/include/asterisk/stasis_channels.h
team/dlee/stasis-cache-split/include/asterisk/stasis_message_router.h
team/dlee/stasis-cache-split/include/asterisk/stasis_system.h
team/dlee/stasis-cache-split/main/asterisk.c
team/dlee/stasis-cache-split/main/asterisk.exports.in
team/dlee/stasis-cache-split/main/audiohook.c
team/dlee/stasis-cache-split/main/bridging.c
team/dlee/stasis-cache-split/main/bridging_basic.c
team/dlee/stasis-cache-split/main/bridging_roles.c
team/dlee/stasis-cache-split/main/ccss.c
team/dlee/stasis-cache-split/main/cdr.c
team/dlee/stasis-cache-split/main/cel.c
team/dlee/stasis-cache-split/main/channel.c
team/dlee/stasis-cache-split/main/core_unreal.c
team/dlee/stasis-cache-split/main/dial.c
team/dlee/stasis-cache-split/main/dns.c
team/dlee/stasis-cache-split/main/features.c
team/dlee/stasis-cache-split/main/features_config.c
team/dlee/stasis-cache-split/main/http.c
team/dlee/stasis-cache-split/main/manager.c
team/dlee/stasis-cache-split/main/manager_bridging.c
team/dlee/stasis-cache-split/main/manager_channels.c
team/dlee/stasis-cache-split/main/pbx.c
team/dlee/stasis-cache-split/main/stasis_bridging.c
team/dlee/stasis-cache-split/main/stasis_cache.c
team/dlee/stasis-cache-split/main/stasis_channels.c
team/dlee/stasis-cache-split/main/stasis_message_router.c
team/dlee/stasis-cache-split/main/stasis_system.c
team/dlee/stasis-cache-split/main/utils.c
team/dlee/stasis-cache-split/res/parking/parking_bridge.c
team/dlee/stasis-cache-split/res/parking/parking_bridge_features.c
team/dlee/stasis-cache-split/res/parking/parking_manager.c
team/dlee/stasis-cache-split/res/res_agi.c
team/dlee/stasis-cache-split/res/res_http_websocket.c
team/dlee/stasis-cache-split/res/res_mutestream.c
team/dlee/stasis-cache-split/res/res_sip.c
team/dlee/stasis-cache-split/res/res_sip.exports.in
team/dlee/stasis-cache-split/res/res_sip/config_transport.c
team/dlee/stasis-cache-split/res/res_sip/include/res_sip_private.h
team/dlee/stasis-cache-split/res/res_sip/sip_configuration.c
team/dlee/stasis-cache-split/res/res_sip/sip_distributor.c
team/dlee/stasis-cache-split/res/res_sip/sip_options.c
team/dlee/stasis-cache-split/res/res_sip_caller_id.c
team/dlee/stasis-cache-split/res/res_sip_mwi.c
team/dlee/stasis-cache-split/res/res_sip_one_touch_record_info.c
team/dlee/stasis-cache-split/res/res_sip_pubsub.c
team/dlee/stasis-cache-split/res/res_sip_refer.c
team/dlee/stasis-cache-split/res/res_sip_sdp_rtp.c
team/dlee/stasis-cache-split/res/res_sip_session.c
team/dlee/stasis-cache-split/res/res_sip_session.exports.in
team/dlee/stasis-cache-split/res/res_stasis.c
team/dlee/stasis-cache-split/res/res_stasis_http.c
team/dlee/stasis-cache-split/res/res_stasis_http_asterisk.c
team/dlee/stasis-cache-split/res/res_stasis_http_bridges.c
team/dlee/stasis-cache-split/res/res_stasis_http_channels.c
team/dlee/stasis-cache-split/res/res_stasis_http_endpoints.c
team/dlee/stasis-cache-split/res/res_stasis_http_playback.c
team/dlee/stasis-cache-split/res/res_stasis_http_recordings.c
team/dlee/stasis-cache-split/res/res_stasis_http_sounds.c
team/dlee/stasis-cache-split/res/res_stasis_playback.c
team/dlee/stasis-cache-split/res/stasis/app.c
team/dlee/stasis-cache-split/res/stasis/app.h
team/dlee/stasis-cache-split/res/stasis/control.c
team/dlee/stasis-cache-split/res/stasis_http/ari_model_validators.c
team/dlee/stasis-cache-split/res/stasis_http/ari_model_validators.h
team/dlee/stasis-cache-split/res/stasis_http/ari_websockets.c
team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.c
team/dlee/stasis-cache-split/res/stasis_http/resource_bridges.h
team/dlee/stasis-cache-split/res/stasis_http/resource_channels.c
team/dlee/stasis-cache-split/res/stasis_http/resource_channels.h
team/dlee/stasis-cache-split/rest-api-templates/res_stasis_http_resource.c.mustache
team/dlee/stasis-cache-split/rest-api/api-docs/bridges.json
team/dlee/stasis-cache-split/rest-api/api-docs/channels.json
team/dlee/stasis-cache-split/rest-api/api-docs/playback.json
team/dlee/stasis-cache-split/rest-api/api-docs/recordings.json
team/dlee/stasis-cache-split/tests/test_app.c
team/dlee/stasis-cache-split/tests/test_cdr.c
team/dlee/stasis-cache-split/tests/test_cel.c
team/dlee/stasis-cache-split/tests/test_stasis.c
team/dlee/stasis-cache-split/tests/test_stasis_endpoints.c
team/dlee/stasis-cache-split/tests/test_voicemail_api.c
Propchange: team/dlee/stasis-cache-split/
------------------------------------------------------------------------------
--- branch-11-blocked (original)
+++ branch-11-blocked Mon Jul 29 10:46:34 2013
@@ -1,1 +1,1 @@
-/branches/11:373240,375247,375702,385356
+/branches/11:373240,375247,375702,385356,395020
Propchange: team/dlee/stasis-cache-split/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.
Propchange: team/dlee/stasis-cache-split/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Jul 29 10:46:34 2013
@@ -1,1 +1,1 @@
-/trunk:1-394263
+/trunk:1-395367
Modified: team/dlee/stasis-cache-split/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/CHANGES?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/CHANGES (original)
+++ team/dlee/stasis-cache-split/CHANGES Mon Jul 29 10:46:34 2013
@@ -14,10 +14,23 @@
Applications
------------------
+AgentLogin
+------------------
+ * The application no longer does agent authentication. The dialplan needs to
+ perform this function before running AgentLogin. If the agent is already
+ logged in, dialplan will continue with the AGENT_STATUS channel variable
+ set to ALREADY_LOGGED_IN.
+
AgentMonitorOutgoing
------------------
- * The 'c' option has been removed. It is not possible to modify the name of a
- channel involved in a CDR.
+ * Application removed. It was a holdover from when AgentCallbackLogin was
+ removed.
+
+ConfBridge
+------------------
+ * All participants in a bridge can now be kicked out of a conference room
+ by specifying the channel parameter as 'all' in the ConfBridge kick CLI
+ command, i.e., "confbridge kick <conference> all"
ForkCDR
------------------
@@ -260,8 +273,8 @@
of "CallerID" and "ConnectedID" to avoid confusion with similarly named
parameters in the channel snapshot.
- * The "Agentlogin" and "Agentlogoff" events have been renamed "AgentLogin" and
- "AgentLogoff" respectively.
+ * The AMI events "Agentlogin" and "Agentlogoff" have been renamed
+ "AgentLogin" and "AgentLogoff" respectively.
* The "Channel" key used in the "AlarmClear", "Alarm", and "DNDState" has been
renamed "DAHDIChannel" since it does not convey an Asterisk channel name.
@@ -281,6 +294,10 @@
the Local channel. This affects the LocalBridge, LocalOptimizationBegin,
and LocalOptimizationEnd events.
+ * The option 'allowmultiplelogin' can now be set or overriden in a particular
+ account. When set in the general context, it will act as the default
+ setting for defined accounts.
+
AGI (Asterisk Gateway Interface)
------------------
* The manager event AGIExec has been split into AGIExecStart and AGIExecEnd.
@@ -306,6 +323,27 @@
* When a CDR is dispatched, user defined CDR variables from both parties are
included in the resulting CDR. If both parties have the same variable, only
the Party A value is provided.
+
+CEL (Channel Event Logging)
+------------------
+ * The 'extra' field of all CEL events that use it now consists of a JSON blob
+ with key/value pairs which are defined in the Asterisk 12 CEL documentation.
+
+ * AST_CEL_BLINDTRANSFER events now report the transferee bridge unique
+ identifier, extension, and context in a JSON blob as the extra string
+ instead of the transferee channel name as the peer.
+
+ * AST_CEL_ATTENDEDTRANSFER events now report the peer as NULL and additional
+ information in the 'extra' string as a JSON blob. For transfers that occur
+ between two bridged channels, the 'extra' JSON blob contains the primary
+ bridge unique identifier, the secondary channel name, and the secondary
+ bridge unique identifier. For transfers that occur between a bridged channel
+ and a channel running an app, the 'extra' JSON blob contains the primary
+ bridge unique identifier, the secondary channel name, and the app name.
+
+ * AST_CEL_LOCAL_OPTIMIZE events have been added to convey local channel
+ optimizations with the record occurring for the semi-one channel and
+ the semi-two channel name in the peer field.
Features
-------------------
@@ -453,6 +491,21 @@
and pretending otherwise helps no one.
* The AGENTUPDATECDR channel variable has also been removed, for the same
reason as the updatecdr option.
+ * The driver is no longer a Data retrieval API data provider for the
+ AMI DataGet action.
+ * The endcall and enddtmf configuration options are removed. Use the
+ dialplan function CHANNEL(dtmf-features) to set DTMF features on the agent
+ channel before calling AgentLogin.
+ * chan_agent is removed and replaced with AgentLogin and AgentRequest dialplan
+ applications. Agents are connected with callers using the new AgentRequest
+ dialplan application. The Agents:<agent-id> device state is available to
+ monitor the status of an agent. See agents.conf.sample for valid
+ configuration options.
+
+chan_bridge
+------------------
+ * chan_bridge is removed and its functionality is incorporated into ConfBridge
+ itself.
chan_local
------------------
@@ -527,6 +580,18 @@
If no resources exist or all are unavailable the device state is considered
to be unavailable.
+
+Scripts
+------------------
+
+safe_asterisk
+------------------
+ * The safe_asterisk script will now install over previously installations.
+ In previous versions of Asterisk, once installed a 'make install' would
+ skip over safe_asterisk if it was already installed.
+ * Certain options in safe_asterisk can now be configured from the
+ safe_asterisk.conf file. A sample version of this is located in the
+ configs/ folder.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 10 to Asterisk 11 --------------------
Modified: team/dlee/stasis-cache-split/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/Makefile?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/Makefile (original)
+++ team/dlee/stasis-cache-split/Makefile Mon Jul 29 10:46:34 2013
@@ -558,8 +558,8 @@
bininstall: _all installdirs $(SUBDIRS_INSTALL) main-bininstall
$(INSTALL) -m 755 contrib/scripts/astgenkey "$(DESTDIR)$(ASTSBINDIR)/"
$(INSTALL) -m 755 contrib/scripts/autosupport "$(DESTDIR)$(ASTSBINDIR)/"
- if [ ! -f "$(DESTDIR)$(ASTSBINDIR)/safe_asterisk" -a ! -f /sbin/launchd ]; then \
- cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;s|__ASTERISK_LOG_DIR__|$(ASTLOGDIR)|;' > contrib/scripts/safe.tmp ; \
+ if [ ! -f /sbin/launchd ]; then \
+ cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;s|__ASTERISK_LOG_DIR__|$(ASTLOGDIR)|;s|__ASTERISK_ETC_DIR__|$(ASTETCDIR)|;' > contrib/scripts/safe.tmp ; \
$(INSTALL) -m 755 contrib/scripts/safe.tmp "$(DESTDIR)$(ASTSBINDIR)/safe_asterisk" ; \
rm -f contrib/scripts/safe.tmp ; \
fi
Modified: team/dlee/stasis-cache-split/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/UPGRADE.txt?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/UPGRADE.txt (original)
+++ team/dlee/stasis-cache-split/UPGRADE.txt Mon Jul 29 10:46:34 2013
@@ -22,8 +22,8 @@
===========================================================
AgentMonitorOutgoing
- - The 'c' option has been removed. It is not possible to modify the name of a
- channel involved in a CDR.
+ - Application removed. It was a holdover from when AgentCallbackLogin was
+ removed.
NoCDR:
- This application is deprecated. Please use the CDR_PROP function instead.
@@ -140,6 +140,15 @@
and pretending otherwise helps no one.
- The AGENTUPDATECDR channel variable has also been removed, for the same
reason as the updatecdr option.
+ - chan_agent is removed and replaced with AgentLogin and AgentRequest dialplan
+ applications. Agents are connected with callers using the new AgentRequest
+ dialplan application. The Agents:<agent-id> device state is available to
+ monitor the status of an agent. See agents.conf.sample for valid
+ configuration options.
+
+chan_bridge
+ - chan_bridge is removed and its functionality is incorporated into ConfBridge
+ itself.
chan_dahdi:
- Analog port dialing and deferred DTMF dialing for PRI now distinguishes
Modified: team/dlee/stasis-cache-split/addons/chan_mobile.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/addons/chan_mobile.c?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/addons/chan_mobile.c (original)
+++ team/dlee/stasis-cache-split/addons/chan_mobile.c Mon Jul 29 10:46:34 2013
@@ -1339,9 +1339,7 @@
static int mbl_ast_hangup(struct mbl_pvt *pvt)
{
- if (pvt->owner) {
- ast_hangup(pvt->owner);
- }
+ ast_hangup(pvt->owner);
return 0;
}
Modified: team/dlee/stasis-cache-split/apps/app_bridgewait.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/app_bridgewait.c?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/apps/app_bridgewait.c (original)
+++ team/dlee/stasis-cache-split/apps/app_bridgewait.c Mon Jul 29 10:46:34 2013
@@ -54,26 +54,44 @@
Put a call into the holding bridge.
</synopsis>
<syntax>
+ <parameter name="role" required="false">
+ <para>Defines the channel's purpose for entering the holding bridge. Values are case sensitive.
+ </para>
+ <enumlist>
+ <enum name="participant">
+ <para>The channel will enter the holding bridge to be placed on hold
+ until it is removed from the bridge for some reason. (default)</para>
+ </enum>
+ <enum name="announcer">
+ <para>The channel will enter the holding bridge to make announcements
+ to channels that are currently in the holding bridge. While an
+ announcer is present, holding for the participants will be
+ suspended.</para>
+ </enum>
+ </enumlist>
+ </parameter>
<parameter name="options">
<optionlist>
- <option name="A">
- <para>The channel will join the holding bridge as an
- announcer</para>
+ <option name="m">
+ <argument name="class" required="true" />
+ <para>The specified MOH class will be used/suggested for
+ music on hold operations. This option will only be useful for
+ entertainment modes that use it (m and h).</para>
</option>
- <option name="m">
- <argument name="class" required="false" />
- <para>Play music on hold to the entering channel while it is
- on hold. If the <emphasis>class</emphasis> is included, then
- that class of music on hold will take priority over the
- channel default.</para>
- </option>
- <option name="r">
- <para>Play a ringing tone to the entering channel while it is
- on hold.</para>
+ <option name="e">
+ <para>Which entertainment mechanism should be used while on hold
+ in the holding bridge. Only the first letter is read.</para>
+ <enumlist>
+ <enum name="m"><para>Play music on hold (default)</para></enum>
+ <enum name="r"><para>Ring without pause</para></enum>
+ <enum name="s"><para>Generate silent audio</para></enum>
+ <enum name="h"><para>Put the channel on hold</para></enum>
+ <enum name="n"><para>No entertainment</para></enum>
+ </enumlist>
</option>
<option name="S">
<argument name="duration" required="true" />
- <para>Automatically end the hold and return to the PBX after
+ <para>Automatically exit the bridge and return to the PBX after
<emphasis>duration</emphasis> seconds.</para>
</option>
</optionlist>
@@ -87,12 +105,8 @@
</application>
***/
/* BUGBUG Add bridge name/id parameter to specify which holding bridge to join (required) */
-/* BUGBUG Add h(moh-class) option to put channel on hold using AST_CONTROL_HOLD/AST_CONTROL_UNHOLD while in bridge */
-/* BUGBUG Add s option to send silence media frames to channel while in bridge (uses a silence generator) */
-/* BUGBUG Add n option to send no media to channel while in bridge (Channel should not be answered yet) */
/* BUGBUG The channel may or may not be answered with the r option. */
/* BUGBUG You should not place an announcer into a holding bridge with unanswered channels. */
-/* BUGBUG Not supplying any option flags will assume the m option with the default music class. */
static char *app = "BridgeWait";
static struct ast_bridge *holding_bridge;
@@ -100,22 +114,21 @@
AST_MUTEX_DEFINE_STATIC(bridgewait_lock);
enum bridgewait_flags {
- MUXFLAG_PLAYMOH = (1 << 0),
- MUXFLAG_RINGING = (1 << 1),
+ MUXFLAG_MOHCLASS = (1 << 0),
+ MUXFLAG_ENTERTAINMENT = (1 << 1),
MUXFLAG_TIMEOUT = (1 << 2),
- MUXFLAG_ANNOUNCER = (1 << 3),
};
enum bridgewait_args {
+ OPT_ARG_ENTERTAINMENT,
OPT_ARG_MOHCLASS,
OPT_ARG_TIMEOUT,
OPT_ARG_ARRAY_SIZE, /* Always the last element of the enum */
};
AST_APP_OPTIONS(bridgewait_opts, {
- AST_APP_OPTION('A', MUXFLAG_ANNOUNCER),
- AST_APP_OPTION('r', MUXFLAG_RINGING),
- AST_APP_OPTION_ARG('m', MUXFLAG_PLAYMOH, OPT_ARG_MOHCLASS),
+ AST_APP_OPTION_ARG('e', MUXFLAG_ENTERTAINMENT, OPT_ARG_ENTERTAINMENT),
+ AST_APP_OPTION_ARG('m', MUXFLAG_MOHCLASS, OPT_ARG_MOHCLASS),
AST_APP_OPTION_ARG('S', MUXFLAG_TIMEOUT, OPT_ARG_TIMEOUT),
});
@@ -147,18 +160,38 @@
return 0;
}
-static void apply_option_moh(struct ast_channel *chan, char *class_arg)
-{
- ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "musiconhold");
- ast_channel_set_bridge_role_option(chan, "holding_participant", "moh_class", class_arg);
-}
-
-static void apply_option_ringing(struct ast_channel *chan)
-{
- ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "ringing");
-}
-
-static int process_options(struct ast_channel *chan, struct ast_flags *flags, char **opts, struct ast_bridge_features *features)
+static int apply_option_moh(struct ast_channel *chan, const char *class_arg)
+{
+ return ast_channel_set_bridge_role_option(chan, "holding_participant", "moh_class", class_arg);
+}
+
+static int apply_option_entertainment(struct ast_channel *chan, const char *entertainment_arg)
+{
+ char entertainment = entertainment_arg[0];
+ switch (entertainment) {
+ case 'm':
+ return ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "musiconhold");
+ case 'r':
+ return ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "ringing");
+ case 's':
+ return ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "silence");
+ case 'h':
+ return ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "hold");
+ case 'n':
+ return ast_channel_set_bridge_role_option(chan, "holding_participant", "idle_mode", "none");
+ default:
+ ast_log(LOG_ERROR, "Invalid argument for BridgeWait entertainment '%s'\n", entertainment_arg);
+ return -1;
+ }
+}
+
+enum wait_bridge_roles {
+ ROLE_PARTICIPANT = 0,
+ ROLE_ANNOUNCER,
+ ROLE_INVALID,
+};
+
+static int process_options(struct ast_channel *chan, struct ast_flags *flags, char **opts, struct ast_bridge_features *features, enum wait_bridge_roles role)
{
if (ast_test_flag(flags, MUXFLAG_TIMEOUT)) {
if (apply_option_timeout(features, opts[OPT_ARG_TIMEOUT])) {
@@ -166,21 +199,47 @@
}
}
- if (ast_test_flag(flags, MUXFLAG_ANNOUNCER)) {
- /* Announcer specific stuff */
- ast_channel_add_bridge_role(chan, "announcer");
+ switch (role) {
+ case ROLE_PARTICIPANT:
+ if (ast_channel_add_bridge_role(chan, "holding_participant")) {
+ return -1;
+ }
+
+ if (ast_test_flag(flags, MUXFLAG_MOHCLASS)) {
+ if (apply_option_moh(chan, opts[OPT_ARG_MOHCLASS])) {
+ return -1;
+ }
+ }
+
+ if (ast_test_flag(flags, MUXFLAG_ENTERTAINMENT)) {
+ if (apply_option_entertainment(chan, opts[OPT_ARG_ENTERTAINMENT])) {
+ return -1;
+ }
+ }
+
+ break;
+ case ROLE_ANNOUNCER:
+ if (ast_channel_add_bridge_role(chan, "announcer")) {
+ return -1;
+ }
+ break;
+ case ROLE_INVALID:
+ ast_assert(0);
+ return -1;
+ }
+
+ return 0;
+}
+
+static enum wait_bridge_roles validate_role(const char *role)
+{
+ if (!strcmp(role, "participant")) {
+ return ROLE_PARTICIPANT;
+ } else if (!strcmp(role, "announcer")) {
+ return ROLE_ANNOUNCER;
} else {
- /* Non Announcer specific stuff */
- ast_channel_add_bridge_role(chan, "holding_participant");
-
- if (ast_test_flag(flags, MUXFLAG_PLAYMOH)) {
- apply_option_moh(chan, opts[OPT_ARG_MOHCLASS]);
- } else if (ast_test_flag(flags, MUXFLAG_RINGING)) {
- apply_option_ringing(chan);
- }
- }
-
- return 0;
+ return ROLE_INVALID;
+ }
}
static int bridgewait_exec(struct ast_channel *chan, const char *data)
@@ -188,8 +247,11 @@
struct ast_bridge_features chan_features;
struct ast_flags flags = { 0 };
char *parse;
+ enum wait_bridge_roles role = ROLE_PARTICIPANT;
+ char *opts[OPT_ARG_ARRAY_SIZE] = { NULL, };
AST_DECLARE_APP_ARGS(args,
+ AST_APP_ARG(role);
AST_APP_ARG(options);
AST_APP_ARG(other); /* Any remaining unused arguments */
);
@@ -209,18 +271,26 @@
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
+ if (!ast_strlen_zero(args.role)) {
+ role = validate_role(args.role);
+ if (role == ROLE_INVALID) {
+ ast_log(LOG_ERROR, "Requested waiting bridge role '%s' is invalid.\n", args.role);
+ return -1;
+ }
+ }
+
if (ast_bridge_features_init(&chan_features)) {
ast_bridge_features_cleanup(&chan_features);
return -1;
}
if (args.options) {
- char *opts[OPT_ARG_ARRAY_SIZE] = { NULL, };
ast_app_parse_options(bridgewait_opts, &flags, opts, args.options);
- if (process_options(chan, &flags, opts, &chan_features)) {
- ast_bridge_features_cleanup(&chan_features);
- return -1;
- }
+ }
+
+ if (process_options(chan, &flags, opts, &chan_features, role)) {
+ ast_bridge_features_cleanup(&chan_features);
+ return -1;
}
ast_bridge_join(holding_bridge, chan, NULL, &chan_features, NULL, 0);
Modified: team/dlee/stasis-cache-split/apps/app_celgenuserevent.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/app_celgenuserevent.c?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/apps/app_celgenuserevent.c (original)
+++ team/dlee/stasis-cache-split/apps/app_celgenuserevent.c Mon Jul 29 10:46:34 2013
@@ -75,9 +75,9 @@
parse = ast_strdupa(data);
AST_STANDARD_APP_ARGS(args, parse);
- blob = ast_json_pack("{s: s, s: s}",
+ blob = ast_json_pack("{s: s, s: {s: s}}",
"event", args.event,
- "extra", args.extra);
+ "extra", "extra", args.extra);
if (!blob) {
return res;
}
Modified: team/dlee/stasis-cache-split/apps/app_confbridge.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/app_confbridge.c?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/apps/app_confbridge.c (original)
+++ team/dlee/stasis-cache-split/apps/app_confbridge.c Mon Jul 29 10:46:34 2013
@@ -1402,25 +1402,26 @@
ast_free(pvt_data);
}
-static void conf_handle_talker_cb(struct ast_bridge_channel *bridge_channel, void *pvt_data, int talking)
+static int conf_handle_talker_cb(struct ast_bridge_channel *bridge_channel, void *pvt_data, int talking)
{
const char *conf_name = pvt_data;
struct confbridge_conference *conference = ao2_find(conference_bridges, conf_name, OBJ_KEY);
struct ast_json *talking_extras;
if (!conference) {
- return;
+ /* Remove the hook since the conference does not exist. */
+ return -1;
}
talking_extras = ast_json_pack("{s: s}",
- "talking_status", talking ? "on" : "off");
-
+ "talking_status", talking ? "on" : "off");
if (!talking_extras) {
- return;
+ return 0;
}
send_conf_stasis(conference, bridge_channel->chan, confbridge_talking_type(), talking_extras, 0);
ast_json_unref(talking_extras);
+ return 0;
}
static int conf_get_pin(struct ast_channel *chan, struct confbridge_user *user)
@@ -1599,14 +1600,17 @@
/* Set a talker indicate call back if talking detection is requested */
if (ast_test_flag(&user.u_profile, USER_OPT_TALKER_DETECT)) {
char *conf_name = ast_strdup(args.conf_name); /* this is freed during feature cleanup */
- if (!(conf_name)) {
+
+ if (!conf_name) {
res = -1; /* invalid PIN */
goto confbridge_cleanup;
}
- ast_bridge_features_set_talk_detector(&user.features,
- conf_handle_talker_cb,
- conf_handle_talker_destructor,
- conf_name);
+ if (ast_bridge_talk_detector_hook(&user.features, conf_handle_talker_cb,
+ conf_name, conf_handle_talker_destructor, AST_BRIDGE_HOOK_REMOVE_ON_PULL)) {
+ ast_free(conf_name);
+ res = -1;
+ goto confbridge_cleanup;
+ }
}
/* Look for a conference bridge matching the provided name */
@@ -2069,6 +2073,7 @@
static int kick_conference_participant(struct confbridge_conference *conference, const char *channel)
{
+ int res = -1;
struct confbridge_user *user = NULL;
SCOPED_AO2LOCK(bridge_lock, conference);
@@ -2077,6 +2082,10 @@
user->kicked = 1;
ast_bridge_remove(conference->bridge, user->chan);
return 0;
+ } else if (!strcasecmp("all", channel)) {
+ user->kicked = 1;
+ ast_bridge_remove(conference->bridge, user->chan);
+ res = 0;
}
}
AST_LIST_TRAVERSE(&conference->waiting_list, user, list) {
@@ -2084,10 +2093,14 @@
user->kicked = 1;
ast_bridge_remove(conference->bridge, user->chan);
return 0;
- }
- }
-
- return -1;
+ } else if (!strcasecmp("all", channel)) {
+ user->kicked = 1;
+ ast_bridge_remove(conference->bridge, user->chan);
+ res = 0;
+ }
+ }
+
+ return res;
}
static char *complete_confbridge_name(const char *line, const char *word, int pos, int state)
Modified: team/dlee/stasis-cache-split/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/app_dial.c?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/apps/app_dial.c (original)
+++ team/dlee/stasis-cache-split/apps/app_dial.c Mon Jul 29 10:46:34 2013
@@ -60,7 +60,6 @@
#include "asterisk/stringfields.h"
#include "asterisk/global_datastores.h"
#include "asterisk/dsp.h"
-#include "asterisk/cel.h"
#include "asterisk/aoc.h"
#include "asterisk/ccss.h"
#include "asterisk/indications.h"
@@ -68,6 +67,7 @@
#include "asterisk/dial.h"
#include "asterisk/stasis_channels.h"
#include "asterisk/bridging.h"
+#include "asterisk/bridging_after.h"
#include "asterisk/features_config.h"
/*** DOCUMENTATION
@@ -202,7 +202,7 @@
<argument name="exten" required="false" />
<argument name="priority" required="true" />
<para>If the call is answered, transfer the calling party to
- the specified <replaceable>priority</replaceable> and the called party to the specified
+ the specified <replaceable>priority</replaceable> and the called party to the specified
<replaceable>priority</replaceable> plus one.</para>
<note>
<para>You cannot use any additional action post answer options in conjunction with this option.</para>
@@ -291,7 +291,7 @@
<argument name="arg" multiple="true">
<para>Macro arguments</para>
</argument>
- <para>Execute the specified <replaceable>macro</replaceable> for the <emphasis>called</emphasis> channel
+ <para>Execute the specified <replaceable>macro</replaceable> for the <emphasis>called</emphasis> channel
before connecting to the calling channel. Arguments can be specified to the Macro
using <literal>^</literal> as a delimiter. The macro can set the variable
<variable>MACRO_RESULT</variable> to specify the following actions after the macro is
@@ -333,7 +333,7 @@
<para>With <replaceable>delete</replaceable> set to <literal>1</literal>, the introduction will
always be deleted.</para>
</argument>
- <para>This option is a modifier for the call screening/privacy mode. (See the
+ <para>This option is a modifier for the call screening/privacy mode. (See the
<literal>p</literal> and <literal>P</literal> options.) It specifies
that no introductions are to be saved in the <directory>priv-callerintros</directory>
directory.</para>
@@ -354,7 +354,7 @@
<argument name="mode">
<para>With <replaceable>mode</replaceable> either not specified or set to <literal>1</literal>,
the originator hanging up will cause the phone to ring back immediately.</para>
- <para>With <replaceable>mode</replaceable> set to <literal>2</literal>, when the operator
+ <para>With <replaceable>mode</replaceable> set to <literal>2</literal>, when the operator
flashes the trunk, it will ring their phone back.</para>
</argument>
<para>Enables <emphasis>operator services</emphasis> mode. This option only
@@ -1072,7 +1072,7 @@
/* If we are calling a single channel, and not providing ringback or music, */
/* then, make them compatible for in-band tone purpose */
if (ast_channel_make_compatible(outgoing->chan, in) < 0) {
- /* If these channels can not be made compatible,
+ /* If these channels can not be made compatible,
* there is no point in continuing. The bridge
* will just fail if it gets that far.
*/
@@ -1766,7 +1766,7 @@
/*! \page DialPrivacy Dial Privacy scripts
* \par priv-callee-options script:
- * \li Dial 1 if you wish this caller to reach you directly in the future,
+ * \li Dial 1 if you wish this caller to reach you directly in the future,
* and immediately connect to their incoming call.
* \li Dial 2 if you wish to send this caller to voicemail now and forevermore.
* \li Dial 3 to send this caller to the torture menus, now and forevermore.
@@ -1892,7 +1892,7 @@
} else if (ast_test_flag64(opts, OPT_SCREEN_NOCALLERID) && strncmp(pa->privcid, "NOCALLERID", 10) == 0) {
ast_verb(3, "CallerID blank; N option set; Screening should happen; dbval is %d\n", pa->privdb_val);
}
-
+
if (pa->privdb_val == AST_PRIVACY_DENY) {
ast_verb(3, "Privacy DB reports PRIVACY_DENY for this callerid. Dial reports unavailable\n");
ast_copy_string(pa->status, "NOANSWER", sizeof(pa->status));
@@ -2022,14 +2022,14 @@
ast_channel_lock(chan);
context = ast_strdupa(ast_channel_context(chan));
ast_channel_unlock(chan);
- ast_after_bridge_set_h(peer, context);
+ ast_bridge_set_after_h(peer, context);
} else if (ast_test_flag64(opts, OPT_CALLEE_GO_ON)) {
ast_channel_lock(chan);
context = ast_strdupa(ast_channel_context(chan));
extension = ast_strdupa(ast_channel_exten(chan));
priority = ast_channel_priority(chan);
ast_channel_unlock(chan);
- ast_after_bridge_set_go_on(peer, context, extension, priority,
+ ast_bridge_set_after_go_on(peer, context, extension, priority,
opt_args[OPT_ARG_CALLEE_GO_ON]);
}
}
@@ -2445,7 +2445,7 @@
/* We are on the only destination. */
ast_rtp_instance_early_bridge_make_compatible(tc, chan);
}
-
+
/* Inherit specially named variables from parent channel */
ast_channel_inherit_variables(chan, tc);
ast_channel_datastore_inherit(chan, tc);
@@ -2699,7 +2699,7 @@
/* If appropriate, log that we have a destination channel and set the answer time */
if (ast_channel_name(peer))
pbx_builtin_setvar_helper(chan, "DIALEDPEERNAME", ast_channel_name(peer));
-
+
ast_channel_lock(peer);
number = pbx_builtin_getvar_helper(peer, "DIALEDPEERNUMBER");
if (ast_strlen_zero(number)) {
@@ -2968,7 +2968,7 @@
ast_channel_hangupcause_set(chan, ast_channel_hangupcause(peer));
}
setup_peer_after_bridge_goto(chan, peer, &opts, opt_args);
- if (ast_after_bridge_goto_setup(peer)
+ if (ast_bridge_setup_after_goto(peer)
|| ast_pbx_start(peer)) {
ast_autoservice_chan_hangup_peer(chan, peer);
}
@@ -2998,7 +2998,7 @@
config.end_bridge_callback = end_bridge_callback;
config.end_bridge_callback_data = chan;
config.end_bridge_callback_data_fixup = end_bridge_callback_data_fixup;
-
+
if (moh) {
moh = 0;
ast_moh_stop(chan);
Modified: team/dlee/stasis-cache-split/apps/app_directed_pickup.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/stasis-cache-split/apps/app_directed_pickup.c?view=diff&rev=395671&r1=395670&r2=395671
==============================================================================
--- team/dlee/stasis-cache-split/apps/app_directed_pickup.c (original)
+++ team/dlee/stasis-cache-split/apps/app_directed_pickup.c Mon Jul 29 10:46:34 2013
@@ -46,7 +46,6 @@
#include "asterisk/features.h"
#include "asterisk/manager.h"
#include "asterisk/callerid.h"
-#include "asterisk/cel.h"
#define PICKUPMARK "PICKUPMARK"
Modified: team/dlee/stasis-cache-split/apps/app_meetme.c
[... 23840 lines stripped ...]
More information about the svn-commits
mailing list