[asterisk-commits] mmichelson: branch mmichelson/atxfer_features r395072 - in /team/mmichelson/a...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Jul 22 09:58:27 CDT 2013
Author: mmichelson
Date: Mon Jul 22 09:58:09 2013
New Revision: 395072
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=395072
Log:
Re-add automerge property.
Added:
team/mmichelson/atxfer_features/channels/chan_bridge_media.c
- copied unchanged from r395034, trunk/channels/chan_bridge_media.c
team/mmichelson/atxfer_features/configs/safe_asterisk.conf.sample
- copied unchanged from r395034, trunk/configs/safe_asterisk.conf.sample
Modified:
team/mmichelson/atxfer_features/ (props changed)
team/mmichelson/atxfer_features/CHANGES
team/mmichelson/atxfer_features/Makefile
team/mmichelson/atxfer_features/apps/app_celgenuserevent.c
team/mmichelson/atxfer_features/apps/app_dial.c
team/mmichelson/atxfer_features/apps/app_directed_pickup.c
team/mmichelson/atxfer_features/apps/app_queue.c
team/mmichelson/atxfer_features/apps/confbridge/conf_chan_announce.c
team/mmichelson/atxfer_features/apps/confbridge/conf_chan_record.c
team/mmichelson/atxfer_features/apps/confbridge/confbridge_manager.c
team/mmichelson/atxfer_features/bridges/bridge_native_rtp.c
team/mmichelson/atxfer_features/channels/chan_dahdi.c
team/mmichelson/atxfer_features/channels/chan_sip.c
team/mmichelson/atxfer_features/channels/iax2/parser.c
team/mmichelson/atxfer_features/channels/sig_analog.c
team/mmichelson/atxfer_features/configs/iax.conf.sample
team/mmichelson/atxfer_features/configs/indications.conf.sample
team/mmichelson/atxfer_features/contrib/realtime/postgresql/realtime.sql
team/mmichelson/atxfer_features/contrib/scripts/safe_asterisk
team/mmichelson/atxfer_features/funcs/func_channel.c
team/mmichelson/atxfer_features/include/asterisk/astobj2.h
team/mmichelson/atxfer_features/include/asterisk/audiohook.h
team/mmichelson/atxfer_features/include/asterisk/cel.h
team/mmichelson/atxfer_features/include/asterisk/channel.h
team/mmichelson/atxfer_features/include/asterisk/core_unreal.h
team/mmichelson/atxfer_features/include/asterisk/logger.h
team/mmichelson/atxfer_features/include/asterisk/stasis_app.h
team/mmichelson/atxfer_features/include/asterisk/stasis_app_playback.h
team/mmichelson/atxfer_features/include/asterisk/stasis_channels.h
team/mmichelson/atxfer_features/include/asterisk/stasis_system.h
team/mmichelson/atxfer_features/main/asterisk.c
team/mmichelson/atxfer_features/main/audiohook.c
team/mmichelson/atxfer_features/main/bridging.c
team/mmichelson/atxfer_features/main/ccss.c
team/mmichelson/atxfer_features/main/cdr.c
team/mmichelson/atxfer_features/main/cel.c
team/mmichelson/atxfer_features/main/channel.c
team/mmichelson/atxfer_features/main/core_unreal.c
team/mmichelson/atxfer_features/main/features.c
team/mmichelson/atxfer_features/main/http.c
team/mmichelson/atxfer_features/main/manager.c
team/mmichelson/atxfer_features/main/manager_bridging.c
team/mmichelson/atxfer_features/main/manager_channels.c
team/mmichelson/atxfer_features/main/pbx.c
team/mmichelson/atxfer_features/main/stasis_channels.c
team/mmichelson/atxfer_features/main/stasis_system.c
team/mmichelson/atxfer_features/res/parking/parking_manager.c
team/mmichelson/atxfer_features/res/res_stasis.c
team/mmichelson/atxfer_features/res/res_stasis_http_bridges.c
team/mmichelson/atxfer_features/res/res_stasis_http_channels.c
team/mmichelson/atxfer_features/res/res_stasis_http_playback.c
team/mmichelson/atxfer_features/res/res_stasis_playback.c
team/mmichelson/atxfer_features/res/stasis/control.c
team/mmichelson/atxfer_features/res/stasis_http/ari_model_validators.c
team/mmichelson/atxfer_features/res/stasis_http/ari_model_validators.h
team/mmichelson/atxfer_features/res/stasis_http/resource_bridges.c
team/mmichelson/atxfer_features/res/stasis_http/resource_bridges.h
team/mmichelson/atxfer_features/res/stasis_http/resource_channels.c
team/mmichelson/atxfer_features/res/stasis_http/resource_channels.h
team/mmichelson/atxfer_features/rest-api/api-docs/bridges.json
team/mmichelson/atxfer_features/rest-api/api-docs/channels.json
team/mmichelson/atxfer_features/rest-api/api-docs/playback.json
team/mmichelson/atxfer_features/rest-api/api-docs/recordings.json
team/mmichelson/atxfer_features/tests/test_cel.c
Propchange: team/mmichelson/atxfer_features/
------------------------------------------------------------------------------
automerge = *
Propchange: team/mmichelson/atxfer_features/
------------------------------------------------------------------------------
--- branch-11-blocked (original)
+++ branch-11-blocked Mon Jul 22 09:58:09 2013
@@ -1,1 +1,1 @@
-/branches/11:373240,375247,375702,385356
+/branches/11:373240,375247,375702,385356,395020
Propchange: team/mmichelson/atxfer_features/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.
Propchange: team/mmichelson/atxfer_features/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Mon Jul 22 09:58:09 2013
@@ -1,1 +1,1 @@
-/trunk:1-394778
+/trunk:1-395071
Modified: team/mmichelson/atxfer_features/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/CHANGES?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/CHANGES (original)
+++ team/mmichelson/atxfer_features/CHANGES Mon Jul 22 09:58:09 2013
@@ -294,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.
@@ -319,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
-------------------
@@ -555,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/mmichelson/atxfer_features/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/Makefile?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/Makefile (original)
+++ team/mmichelson/atxfer_features/Makefile Mon Jul 22 09:58:09 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/mmichelson/atxfer_features/apps/app_celgenuserevent.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/app_celgenuserevent.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/app_celgenuserevent.c (original)
+++ team/mmichelson/atxfer_features/apps/app_celgenuserevent.c Mon Jul 22 09:58:09 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/mmichelson/atxfer_features/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/app_dial.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/app_dial.c (original)
+++ team/mmichelson/atxfer_features/apps/app_dial.c Mon Jul 22 09:58:09 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"
Modified: team/mmichelson/atxfer_features/apps/app_directed_pickup.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/app_directed_pickup.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/app_directed_pickup.c (original)
+++ team/mmichelson/atxfer_features/apps/app_directed_pickup.c Mon Jul 22 09:58:09 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/mmichelson/atxfer_features/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/app_queue.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/app_queue.c (original)
+++ team/mmichelson/atxfer_features/apps/app_queue.c Mon Jul 22 09:58:09 2013
@@ -103,7 +103,6 @@
#include "asterisk/taskprocessor.h"
#include "asterisk/aoc.h"
#include "asterisk/callerid.h"
-#include "asterisk/cel.h"
#include "asterisk/data.h"
#include "asterisk/term.h"
#include "asterisk/dial.h"
Modified: team/mmichelson/atxfer_features/apps/confbridge/conf_chan_announce.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/confbridge/conf_chan_announce.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/confbridge/conf_chan_announce.c (original)
+++ team/mmichelson/atxfer_features/apps/confbridge/conf_chan_announce.c Mon Jul 22 09:58:09 2013
@@ -134,6 +134,7 @@
.send_text = ast_unreal_sendtext,
.queryoption = ast_unreal_queryoption,
.setoption = ast_unreal_setoption,
+ .properties = AST_CHAN_TP_ANNOUNCER,
};
struct ast_channel_tech *conf_announce_get_tech(void)
Modified: team/mmichelson/atxfer_features/apps/confbridge/conf_chan_record.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/confbridge/conf_chan_record.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/confbridge/conf_chan_record.c (original)
+++ team/mmichelson/atxfer_features/apps/confbridge/conf_chan_record.c Mon Jul 22 09:58:09 2013
@@ -86,6 +86,7 @@
.call = rec_call,
.read = rec_read,
.write = rec_write,
+ .properties = AST_CHAN_TP_RECORDER,
};
struct ast_channel_tech *conf_record_get_tech(void)
Modified: team/mmichelson/atxfer_features/apps/confbridge/confbridge_manager.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/apps/confbridge/confbridge_manager.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/apps/confbridge/confbridge_manager.c (original)
+++ team/mmichelson/atxfer_features/apps/confbridge/confbridge_manager.c Mon Jul 22 09:58:09 2013
@@ -195,13 +195,16 @@
{
struct ast_bridge_blob *blob = stasis_message_data(message);
const char *conference_name;
- RAII_VAR(struct ast_str *, bridge_text,
- ast_manager_build_bridge_state_string(blob->bridge, ""),
- ast_free);
+ RAII_VAR(struct ast_str *, bridge_text, NULL, ast_free);
RAII_VAR(struct ast_str *, channel_text, NULL, ast_free);
ast_assert(blob != NULL);
ast_assert(event != NULL);
+
+ bridge_text = ast_manager_build_bridge_state_string(blob->bridge, "");
+ if (!bridge_text) {
+ return;
+ }
conference_name = ast_json_string_get(ast_json_object_get(blob->blob, "conference"));
ast_assert(conference_name != NULL);
Modified: team/mmichelson/atxfer_features/bridges/bridge_native_rtp.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/bridges/bridge_native_rtp.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/bridges/bridge_native_rtp.c (original)
+++ team/mmichelson/atxfer_features/bridges/bridge_native_rtp.c Mon Jul 22 09:58:09 2013
@@ -45,7 +45,6 @@
#include "asterisk/bridging_technology.h"
#include "asterisk/frame.h"
#include "asterisk/rtp_engine.h"
-#include "asterisk/audiohook.h"
/*! \brief Forward declarations for frame hook usage */
static int native_rtp_bridge_join(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel);
@@ -85,13 +84,7 @@
/*! \brief Internal helper function which checks whether the channels are compatible with our native bridging */
static int native_rtp_bridge_capable(struct ast_channel *chan)
{
- if (ast_channel_monitor(chan) || (ast_channel_audiohooks(chan) &&
- !ast_audiohook_write_list_empty(ast_channel_audiohooks(chan))) ||
- !ast_framehook_list_contains_no_active(ast_channel_framehooks(chan))) {
- return 0;
- } else {
- return 1;
- }
+ return ast_channel_has_audio_frame_or_monitor(chan);
}
/*! \brief Internal helper function which gets all RTP information (glue and instances) relating to the given channels */
Modified: team/mmichelson/atxfer_features/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/channels/chan_dahdi.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/channels/chan_dahdi.c (original)
+++ team/mmichelson/atxfer_features/channels/chan_dahdi.c Mon Jul 22 09:58:09 2013
@@ -107,7 +107,6 @@
#include "asterisk/callerid.h"
#include "asterisk/adsi.h"
#include "asterisk/cli.h"
-#include "asterisk/cel.h"
#include "asterisk/features.h"
#include "asterisk/musiconhold.h"
#include "asterisk/say.h"
Modified: team/mmichelson/atxfer_features/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/channels/chan_sip.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/channels/chan_sip.c (original)
+++ team/mmichelson/atxfer_features/channels/chan_sip.c Mon Jul 22 09:58:09 2013
@@ -276,7 +276,6 @@
#include "asterisk/translate.h"
#include "asterisk/ast_version.h"
#include "asterisk/event.h"
-#include "asterisk/cel.h"
#include "asterisk/data.h"
#include "asterisk/aoc.h"
#include "asterisk/message.h"
@@ -8044,7 +8043,7 @@
return NULL;
}
- if (i->relatedpeer) {
+ if (i->relatedpeer && i->relatedpeer->endpoint) {
if (ast_endpoint_add_channel(i->relatedpeer->endpoint, tmp)) {
ast_channel_unref(tmp);
sip_pvt_lock(i);
@@ -15744,7 +15743,6 @@
static int expire_register(const void *data)
{
struct sip_peer *peer = (struct sip_peer *)data;
- RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
if (!peer) { /* Hmmm. We have no peer. Weird. */
return 0;
@@ -15764,11 +15762,14 @@
peer->socket.ws_session = NULL;
}
- ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_OFFLINE);
- blob = ast_json_pack("{s: s, s: s}",
- "peer_status", "Unregistered",
- "cause", "Expired");
- ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ if (peer->endpoint) {
+ RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
+ ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_OFFLINE);
+ blob = ast_json_pack("{s: s, s: s}",
+ "peer_status", "Unregistered",
+ "cause", "Expired");
+ ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ }
register_peer_exten(peer, FALSE); /* Remove regexten */
ast_devstate_changed(AST_DEVICE_UNKNOWN, AST_DEVSTATE_CACHABLE, "SIP/%s", peer->name);
@@ -16013,7 +16014,6 @@
int start = 0;
int wildcard_found = 0;
int single_binding_found = 0;
- RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
ast_copy_string(contact, __get_header(req, "Contact", &start), sizeof(contact));
@@ -16201,11 +16201,14 @@
ast_db_put("SIP/Registry", peer->name, data);
}
- ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_ONLINE);
- blob = ast_json_pack("{s: s, s: s}",
- "peer_status", "Registered",
- "address", ast_sockaddr_stringify(&peer->addr));
- ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ if (peer->endpoint) {
+ RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
+ ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_ONLINE);
+ blob = ast_json_pack("{s: s, s: s}",
+ "peer_status", "Registered",
+ "address", ast_sockaddr_stringify(&peer->addr));
+ ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ }
/* Is this a new IP address for us? */
if (ast_sockaddr_cmp(&peer->addr, &oldsin)) {
@@ -17209,7 +17212,6 @@
/* Create peer if we have autocreate mode enabled */
peer = temp_peer(name);
if (peer) {
- RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
ao2_t_link(peers, peer, "link peer into peer table");
if (!ast_sockaddr_isnull(&peer->addr)) {
ao2_t_link(peers_by_ip, peer, "link peer into peers-by-ip table");
@@ -17238,11 +17240,14 @@
ast_string_field_set(p, fullcontact, peer->fullcontact);
/* Say OK and ask subsystem to retransmit msg counter */
transmit_response_with_date(p, "200 OK", req);
- ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_ONLINE);
- blob = ast_json_pack("{s: s, s: s}",
- "peer_status", "Registered",
- "address", ast_sockaddr_stringify(addr));
- ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ if (peer->endpoint) {
+ RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
+ ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_ONLINE);
+ blob = ast_json_pack("{s: s, s: s}",
+ "peer_status", "Registered",
+ "address", ast_sockaddr_stringify(addr));
+ ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ }
send_mwi = 1;
res = 0;
break;
@@ -17332,7 +17337,9 @@
break;
}
- ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ if (peer->endpoint) {
+ ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ }
}
if (peer) {
sip_unref_peer(peer, "register_verify: sip_unref_peer: tossing stack peer pointer at end of func");
@@ -23815,7 +23822,6 @@
if (statechanged) {
const char *s = is_reachable ? "Reachable" : "Lagged";
char str_lastms[20];
- RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
snprintf(str_lastms, sizeof(str_lastms), "%d", pingtime);
@@ -23825,13 +23831,18 @@
if (sip_cfg.peer_rtupdate) {
ast_update_realtime(ast_check_realtime("sipregs") ? "sipregs" : "sippeers", "name", peer->name, "lastms", str_lastms, SENTINEL);
}
- ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_ONLINE);
- blob = ast_json_pack("{s: s, s: i}",
- "peer_status", s,
- "time", pingtime);
- ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
- if (is_reachable && sip_cfg.regextenonqualify)
+ if (peer->endpoint) {
+ RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
+ ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_ONLINE);
+ blob = ast_json_pack("{s: s, s: i}",
+ "peer_status", s,
+ "time", pingtime);
+ ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ }
+
+ if (is_reachable && sip_cfg.regextenonqualify) {
register_peer_exten(peer, TRUE);
+ }
}
pvt_set_needdestroy(p, "got OPTIONS response");
@@ -29143,17 +29154,21 @@
peer->pokeexpire = -1;
if (peer->lastms > -1) {
- RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
ast_log(LOG_NOTICE, "Peer '%s' is now UNREACHABLE! Last qualify: %d\n", peer->name, peer->lastms);
if (sip_cfg.peer_rtupdate) {
ast_update_realtime(ast_check_realtime("sipregs") ? "sipregs" : "sippeers", "name", peer->name, "lastms", "-1", SENTINEL);
}
- ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_OFFLINE);
- blob = ast_json_pack("{s: s, s: s}",
- "peer_status", "Unreachable",
- "time", "-1");
- ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+
+ if (peer->endpoint) {
+ RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
+ ast_endpoint_set_state(peer->endpoint, AST_ENDPOINT_OFFLINE);
+ blob = ast_json_pack("{s: s, s: s}",
+ "peer_status", "Unreachable",
+ "time", "-1");
+ ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
+ }
+
if (sip_cfg.regextenonqualify) {
register_peer_exten(peer, FALSE);
}
Modified: team/mmichelson/atxfer_features/channels/iax2/parser.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/channels/iax2/parser.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/channels/iax2/parser.c (original)
+++ team/mmichelson/atxfer_features/channels/iax2/parser.c Mon Jul 22 09:58:09 2013
@@ -604,6 +604,16 @@
"TXFER ",
"CNLINE ",
"REDIR ",
+ "T38PARM",
+ "CONTRCC",
+ "SRCCHG ",
+ "READACT",
+ "AOC ",
+ "ENDOFQ ",
+ "INCOMPL",
+ "MCID ",
+ "UPDRTPP",
+ "PCAUSEC",
};
struct ast_iax2_full_hdr *fh;
char retries[20];
Modified: team/mmichelson/atxfer_features/channels/sig_analog.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/channels/sig_analog.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/channels/sig_analog.c (original)
+++ team/mmichelson/atxfer_features/channels/sig_analog.c Mon Jul 22 09:58:09 2013
@@ -41,7 +41,6 @@
#include "asterisk/manager.h"
#include "asterisk/astdb.h"
#include "asterisk/features.h"
-#include "asterisk/cel.h"
#include "asterisk/causes.h"
#include "asterisk/features_config.h"
#include "asterisk/bridging.h"
Modified: team/mmichelson/atxfer_features/configs/iax.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/configs/iax.conf.sample?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/configs/iax.conf.sample (original)
+++ team/mmichelson/atxfer_features/configs/iax.conf.sample Mon Jul 22 09:58:09 2013
@@ -608,6 +608,15 @@
; IPs can also optionally be given but are not required. Caller*ID can be
; suggested to the other side as well if it is for example a phone instead of
; another PBX.
+;connectedline=yes ; Set how connected line information is handled for this
+; ; peer. If set to "yes", both sending and receiving
+; ; connected line information will be enabled. If set to
+; ; "send", this peer will send connected line information
+; ; but will not process connected line updates. If set to
+; ; "receive", connected line updates will be processed
+; ; but not sent. If set to "no", connected line updates
+; ; will be disabled. Default is "no".
+
;[dynamichost]
;host=dynamic
Modified: team/mmichelson/atxfer_features/configs/indications.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/configs/indications.conf.sample?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/configs/indications.conf.sample (original)
+++ team/mmichelson/atxfer_features/configs/indications.conf.sample Mon Jul 22 09:58:09 2013
@@ -434,7 +434,7 @@
ringcadence = 2000,4000
dial = 425
busy = 425/500,0/500
-ring = 425/400,0/200
+ring = 425/400,0/200,425/400,0/2000
congestion = 425/500,0/500
[nl]
Modified: team/mmichelson/atxfer_features/contrib/realtime/postgresql/realtime.sql
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/contrib/realtime/postgresql/realtime.sql?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/contrib/realtime/postgresql/realtime.sql (original)
+++ team/mmichelson/atxfer_features/contrib/realtime/postgresql/realtime.sql Mon Jul 22 09:58:09 2013
@@ -138,6 +138,23 @@
PRIMARY KEY (queue_name, interface)
) WITHOUT OIDS;
+drop table queue_log;
+CREATE TABLE "queue_log" (
+"id" SERIAL,
+"time" TIMESTAMP WITHOUT TIME ZONE DEFAULT now() NOT NULL,
+"callid" character varying(50) NOT NULL,
+"queuename" character varying(50) NOT NULL,
+"agent" character varying(50) NOT NULL,
+"event" character varying(20) NOT NULL,
+"data1" character varying(50) NOT NULL,
+"data2" character varying(50) NOT NULL,
+"data3" character varying(50) NOT NULL,
+"data4" character varying(50) NOT NULL,
+"data5" character varying(50) NOT NULL,
+CONSTRAINT queue_log_pkey PRIMARY KEY (id)
+) WITHOUT OIDS;
+
+GRANT ALL ON TABLE queue_log TO asterisk;
GRANT ALL ON TABLE cdr TO asterisk;
GRANT ALL ON TABLE extensions_conf TO asterisk;
GRANT ALL ON TABLE sip_conf TO asterisk;
Modified: team/mmichelson/atxfer_features/contrib/scripts/safe_asterisk
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/contrib/scripts/safe_asterisk?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/contrib/scripts/safe_asterisk (original)
+++ team/mmichelson/atxfer_features/contrib/scripts/safe_asterisk Mon Jul 22 09:58:09 2013
@@ -1,6 +1,7 @@
#!/bin/sh
# vim:textwidth=80:tabstop=4:shiftwidth=4:smartindent:autoindent
+ASTETCDIR=__ASTERISK_ETC_DIR__
ASTSBINDIR=__ASTERISK_SBIN_DIR__
ASTVARRUNDIR=__ASTERISK_VARRUN_DIR__
ASTVARLOGDIR=__ASTERISK_LOG_DIR__
@@ -19,23 +20,32 @@
SLEEPSECS=4
ASTPIDFILE=${ASTVARRUNDIR}/asterisk.pid
-# comment this line out to have this script _not_ kill all mpg123 processes when
-# asterisk exits
-KILLALLMPG123=1
-
-# run asterisk with this priority
-PRIORITY=0
-
-# set system filemax on supported OSes if this variable is set
-# SYSMAXFILES=262144
-
-# Asterisk allows full permissions by default, so set a umask, if you want
-# restricted permissions.
-#UMASK=022
-
-# set max files open with ulimit. On linux systems, this will be automatically
-# set to the system's maximum files open devided by two, if not set here.
-# MAXFILES=32768
+# Obtain parameters from the safe_asterisk.conf file in the
+# ASTETCDIR directory
+
+kvalue=`grep ^KILLALLMPG123= $ASTETCDIR 2>/dev/null | cut -c 15`
+if test "x$kvalue" != "x" ; then
+ KILLALLMPG123=$kvalue
+else
+ KILLALLMPG123=0
+fi
+
+pvalue=`grep ^PRIORITY= $ASTETCDIR 2>/dev/null | cut -c 10`
+if test "x$pvalue" != "x" ; then
+ PRIORITY=$pvalue
+else
+ PRIORITY=0
+fi
+
+svalue=`grep ^SYSMAXFILES= $ASTETCDIR 2>/dev/null | cut -c 13-21`
+if test "x$svalue" != "x" ; then
+ SYSMAXFILES=$svalue
+fi
+
+mvalue=`grep ^MAXFILES= $ASTETCDIR 2>/dev/null | cut -c 10-15`
+if test "x$mvalue" != "x" ; then
+ MAXFILES=$mvalue
+fi
message() {
echo "$1" >&2
@@ -96,8 +106,10 @@
fi
-if test "x$UMASK" != "x"; then
- umask $UMASK
+
+uvalue=`grep ^UMASK= $ASTETCDIR 2>/dev/null | cut -c 7-10`
+if test "x$uvalue" != "x" ; then
+ umask $uvalue
fi
#
@@ -133,7 +145,7 @@
fi
fi
-if test ! -w "${DUMPDROP}" ; then
+if test ! -w "${DUMPDROP}" ; then
message "Cannot write to ${DUMPDROP}"
exit 1
fi
@@ -157,7 +169,7 @@
run_asterisk()
{
- while :; do
+ while :; do
if test "x$TTY" != "x" ; then
cd "${RUNDIR}"
Modified: team/mmichelson/atxfer_features/funcs/func_channel.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/funcs/func_channel.c?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/funcs/func_channel.c (original)
+++ team/mmichelson/atxfer_features/funcs/func_channel.c Mon Jul 22 09:58:09 2013
@@ -20,7 +20,7 @@
*
* \author Kevin P. Fleming <kpfleming at digium.com>
* \author Ben Winslow
- *
+ *
* \ingroup functions
*/
@@ -260,15 +260,34 @@
<para> <literal>audio</literal> Get audio destination</para>
<para> <literal>video</literal> Get video destination</para>
<para> <literal>text</literal> Get text destination</para>
+ <para> Defaults to <literal>audio</literal> if unspecified.</para>
+ </enum>
+ <enum name="rtpsource">
+ <para>R/O Get source RTP destination information.</para>
+ <para> This option takes one additional argument:</para>
+ <para> Argument 1:</para>
+ <para> <literal>audio</literal> Get audio destination</para>
+ <para> <literal>video</literal> Get video destination</para>
+ <para> <literal>text</literal> Get text destination</para>
+ <para> Defaults to <literal>audio</literal> if unspecified.</para>
</enum>
</enumlist>
<para><emphasis>chan_iax2</emphasis> provides the following additional options:</para>
<enumlist>
+ <enum name="osptoken">
+ <para>R/O Get the peer's osptoken.</para>
+ </enum>
<enum name="peerip">
<para>R/O Get the peer's ip address.</para>
</enum>
<enum name="peername">
<para>R/O Get the peer's username.</para>
+ </enum>
+ <enum name="secure_signaling">
+ <para>R/O Get the if the IAX channel is secured.</para>
+ </enum>
+ <enum name="secure_media">
+ <para>R/O Get the if the IAX channel is secured.</para>
</enum>
</enumlist>
<para><emphasis>chan_dahdi</emphasis> provides the following additional options:</para>
@@ -327,17 +346,35 @@
<para><emphasis>chan_ooh323</emphasis> provides the following additional options:</para>
<enumlist>
<enum name="faxdetect">
- <para>Fax Detect [R/W]</para>
+ <para>R/W Fax Detect</para>
<para>Returns 0 or 1</para>
<para>Write yes or no</para>
</enum>
<enum name="t38support">
- <para>t38support [R/W]</para>
+ <para>R/W t38support</para>
<para>Returns 0 or 1</para>
<para>Write yes or no</para>
</enum>
- <enum name="h323id">
- <para>Returns h323id [R]</para>
+ <enum name="h323id_url">
+ <para>R/0 Returns caller URL</para>
+ </enum>
+ <enum name="caller_h323id">
+ <para>R/0 Returns caller h323id</para>
+ </enum>
+ <enum name="caller_dialeddigits">
+ <para>R/0 Returns caller dialed digits</para>
+ </enum>
+ <enum name="caller_email">
+ <para>R/0 Returns caller email</para>
+ </enum>
+ <enum name="callee_email">
+ <para>R/0 Returns callee email</para>
+ </enum>
+ <enum name="callee_dialeddigits">
+ <para>R/0 Returns callee dialed digits</para>
+ </enum>
+ <enum name="caller_url">
+ <para>R/0 Returns caller URL</para>
</enum>
</enumlist>
</parameter>
@@ -553,7 +590,7 @@
#ifdef CHANNEL_TRACE
else if (!strcasecmp(data, "trace")) {
ast_channel_lock(chan);
- if (ast_true(value))
+ if (ast_true(value))
ret = ast_channel_trace_enable(chan);
else if (ast_false(value))
ret = ast_channel_trace_disable(chan);
@@ -568,7 +605,7 @@
struct ast_tone_zone *new_zone;
if (!(new_zone = ast_get_indication_zone(value))) {
ast_log(LOG_ERROR, "Unknown country code '%s' for tonezone. Check indications.conf for available country codes.\n", value);
- ret = -1;
+ ret = -1;
} else {
ast_channel_lock(chan);
if (ast_channel_zone(chan)) {
Modified: team/mmichelson/atxfer_features/include/asterisk/astobj2.h
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/atxfer_features/include/asterisk/astobj2.h?view=diff&rev=395072&r1=395071&r2=395072
==============================================================================
--- team/mmichelson/atxfer_features/include/asterisk/astobj2.h (original)
+++ team/mmichelson/atxfer_features/include/asterisk/astobj2.h Mon Jul 22 09:58:09 2013
@@ -770,12 +770,12 @@
OBJ_UNLINK - to remove the object, once found, from the container.
OBJ_NODATA - don't return the object if found (no ref count change)
OBJ_MULTIPLE - don't stop at first match
- OBJ_POINTER - if set, 'arg' is an object pointer, and a hash table
+ OBJ_SEARCH_OBJECT - if set, 'arg' is an object pointer, and a hash table
search will be done. If not, a traversal is done.
- OBJ_KEY - if set, 'arg', is a search key item that is not an object.
- Similar to OBJ_POINTER and mutually exclusive.
- OBJ_PARTIAL_KEY - if set, 'arg', is a partial search key item that is not an object.
- Similar to OBJ_KEY and mutually exclusive.
+ OBJ_SEARCH_KEY - if set, 'arg', is a search key item that is not an object.
+ Similar to OBJ_SEARCH_OBJECT and mutually exclusive.
+ OBJ_SEARCH_PARTIAL_KEY - if set, 'arg', is a partial search key item that is not an object.
+ Similar to OBJ_SEARCH_KEY and mutually exclusive.
- \b ao2_callback(c, flags, fn, arg)
apply fn(obj, arg) to all objects in the container.
@@ -786,13 +786,13 @@
OBJ_UNLINK - to remove the object, once found, from the container.
OBJ_NODATA - don't return the object if found (no ref count change)
OBJ_MULTIPLE - don't stop at first match
- OBJ_POINTER - if set, 'arg' is an object pointer, and a hash table
+ OBJ_SEARCH_OBJECT - if set, 'arg' is an object pointer, and a hash table
search will be done. If not, a traversal is done through
all the hash table 'buckets'..
- OBJ_KEY - if set, 'arg', is a search key item that is not an object.
- Similar to OBJ_POINTER and mutually exclusive.
- OBJ_PARTIAL_KEY - if set, 'arg', is a partial search key item that is not an object.
- Similar to OBJ_KEY and mutually exclusive.
+ OBJ_SEARCH_KEY - if set, 'arg', is a search key item that is not an object.
+ Similar to OBJ_SEARCH_OBJECT and mutually exclusive.
+ OBJ_SEARCH_PARTIAL_KEY - if set, 'arg', is a partial search key item that is not an object.
+ Similar to OBJ_SEARCH_KEY and mutually exclusive.
- fn is a func that returns int, and takes 3 args:
(void *obj, void *arg, int flags);
obj is an object
@@ -859,11 +859,6 @@
/*!
* \brief Flags passed to ao2_callback_fn(), ao2_hash_fn(), and ao2_sort_fn() to modify behaviour.
- *
- * \todo XXX OBJ_POINTER, OBJ_KEY, and OBJ_PARTIAL_KEY need to
- * be put into a bit field like OBJ_ORDER_MASK since they are
- * mutually exclusive. This change unfortunately is not
- * backwards compatible.
*/
enum search_flags {
/*!
@@ -881,6 +876,59 @@
* result of of the callback function has the CMP_STOP bit set.
*/
OBJ_MULTIPLE = (1 << 2),
+ /*!
+ * \brief Continue if a match is not found.
+ *
+ * \details
+ * This flag forces a whole container search. The
+ * OBJ_SEARCH_OBJECT, OBJ_SEARCH_KEY, and OBJ_SEARCH_PARTIAL_KEY
+ * flags just specify where to start the search in the
+ * container. If the search is not stopped early then the
+ * search _continues_ until the search wraps around to the
+ * starting point.
+ *
+ * Normal searches start where the search key specifies to start
+ * and end when the search key indicates that the object is not
+ * in the container.
+ *
+ * For hash containers, this tells the ao2_callback() core to
+ * keep searching through the rest of the buckets if a match is
+ * not found in the starting bucket defined by the hash value on
+ * the argument.
+ *
+ * For rbtree containers, if the search key is not in the
+ * container, the search will start either at the first item
+ * before the search key or the first item after the search key.
+ *
+ * \note The supplied ao2_callback_fn is called for every node
+ * in the container from the starting point.
+ */
+ OBJ_CONTINUE = (1 << 3),
+ /*!
+ * \brief Assume that the ao2_container is already locked.
+ *
+ * \note For ao2_containers that have mutexes, no locking will
+ * be done.
+ *
+ * \note For ao2_containers that have RWLOCKs, the lock will be
+ * promoted to write mode as needed. The lock will be returned
+ * to the original locked state.
+ *
+ * \note Only use this flag if the ao2_container is manually
+ * locked already.
+ */
+ OBJ_NOLOCK = (1 << 4),
+
+ /*!
+ * \brief Search option field mask.
+ *
+ * \todo Eventually OBJ_SEARCH_MASK will shrink to a two bit
+ * field when the codebase is made to use the search field
[... 4836 lines stripped ...]
More information about the asterisk-commits
mailing list