[asterisk-commits] rmudgett: branch group/performance r400396 - in /team/group/performance: ./ a...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Oct 3 13:32:41 CDT 2013
Author: rmudgett
Date: Thu Oct 3 13:32:30 2013
New Revision: 400396
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=400396
Log:
Bring performance branch up to date with v12.
Added:
team/group/performance/configs/pjsip_notify.conf.sample
- copied unchanged from r400373, branches/12/configs/pjsip_notify.conf.sample
team/group/performance/doc/astdb2bdb.8
- copied unchanged from r400373, branches/12/doc/astdb2bdb.8
team/group/performance/doc/astdb2sqlite3.8
- copied unchanged from r400373, branches/12/doc/astdb2sqlite3.8
Modified:
team/group/performance/ (props changed)
team/group/performance/CHANGES
team/group/performance/Makefile
team/group/performance/apps/app_cdr.c
team/group/performance/apps/app_queue.c
team/group/performance/apps/app_stack.c
team/group/performance/channels/chan_dahdi.c
team/group/performance/channels/chan_iax2.c
team/group/performance/channels/chan_sip.c
team/group/performance/channels/chan_vpb.cc
team/group/performance/channels/sig_analog.c
team/group/performance/channels/sig_pri.c
team/group/performance/channels/sig_ss7.c
team/group/performance/channels/sip/include/sip.h
team/group/performance/channels/sip/reqresp_parser.c
team/group/performance/configs/features.conf.sample
team/group/performance/configs/pjsip.conf.sample
team/group/performance/configs/res_parking.conf.sample
team/group/performance/configs/sip.conf.sample
team/group/performance/configure
team/group/performance/configure.ac
team/group/performance/funcs/func_cdr.c
team/group/performance/include/asterisk/astobj2.h
team/group/performance/include/asterisk/res_pjsip.h
team/group/performance/include/asterisk/sem.h
team/group/performance/include/asterisk/stasis_app.h
team/group/performance/include/asterisk/vector.h
team/group/performance/main/astobj2.c
team/group/performance/main/cdr.c
team/group/performance/main/cel.c
team/group/performance/main/features_config.c
team/group/performance/main/json.c
team/group/performance/main/manager.c
team/group/performance/main/pbx.c
team/group/performance/main/sem.c
team/group/performance/main/stasis.c
team/group/performance/main/stasis_cache.c
team/group/performance/main/stasis_message_router.c
team/group/performance/main/taskprocessor.c
team/group/performance/main/utils.c
team/group/performance/res/ari/resource_channels.c
team/group/performance/res/res_ari.c
team/group/performance/res/res_parking.c
team/group/performance/res/res_pjsip.c
team/group/performance/res/res_pjsip.exports.in
team/group/performance/res/res_pjsip_notify.c
team/group/performance/res/res_pjsip_outbound_registration.c
team/group/performance/res/res_pjsip_sdp_rtp.c
team/group/performance/res/res_pjsip_session.c
team/group/performance/res/res_pjsip_t38.c
team/group/performance/res/res_rtp_asterisk.c
team/group/performance/res/stasis/control.c
team/group/performance/res/stasis_recording/stored.c
team/group/performance/rest-api/api-docs/asterisk.json
team/group/performance/tests/test_astobj2.c
team/group/performance/tests/test_taskprocessor.c
Propchange: team/group/performance/
------------------------------------------------------------------------------
Binary property 'branch-11-merged' - no diff available.
Propchange: team/group/performance/
------------------------------------------------------------------------------
--- performance-integrated (original)
+++ performance-integrated Thu Oct 3 13:32:30 2013
@@ -1,1 +1,1 @@
-/branches/12:1-399935
+/branches/12:1-400375
Modified: team/group/performance/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/CHANGES?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/CHANGES (original)
+++ team/group/performance/CHANGES Thu Oct 3 13:32:30 2013
@@ -853,6 +853,10 @@
* Added 'ignore_requested_pref'. When enabled, this will use the preferred
codecs configured for a peer instead of the requested codec.
+
+ * The option "register_retry_403" has been added to chan_sip to work around
+ servers that are known to erroneously send 403 in response to valid
+ REGISTER requests and allows Asterisk to continue attepmting to connect.
chan_skinny
------------------
Modified: team/group/performance/Makefile
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/Makefile?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/Makefile (original)
+++ team/group/performance/Makefile Thu Oct 3 13:32:30 2013
@@ -578,6 +578,7 @@
$(INSTALL) -m 644 doc/snapshots.xslt "$(DESTDIR)$(ASTDATADIR)/documentation"
$(INSTALL) -m 644 doc/appdocsxml.dtd "$(DESTDIR)$(ASTDATADIR)/documentation"
$(INSTALL) -m 644 doc/asterisk.8 "$(DESTDIR)$(ASTMANDIR)/man8"
+ $(INSTALL) -m 644 doc/astdb*.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 contrib/scripts/astgenkey.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 contrib/scripts/autosupport.8 "$(DESTDIR)$(ASTMANDIR)/man8"
$(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 "$(DESTDIR)$(ASTMANDIR)/man8"
Modified: team/group/performance/apps/app_cdr.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/apps/app_cdr.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/apps/app_cdr.c (original)
+++ team/group/performance/apps/app_cdr.c Thu Oct 3 13:32:30 2013
@@ -149,7 +149,9 @@
static int unload_module(void)
{
- return ast_unregister_application(nocdr_app);
+ ast_unregister_application(nocdr_app);
+ ast_unregister_application(resetcdr_app);
+ return 0;
}
static int load_module(void)
Modified: team/group/performance/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/apps/app_queue.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/apps/app_queue.c (original)
+++ team/group/performance/apps/app_queue.c Thu Oct 3 13:32:30 2013
@@ -1870,13 +1870,21 @@
RAII_VAR(struct ast_str *, event_string, NULL, ast_free);
caller = ast_multi_channel_blob_get_channel(obj, "caller");
+ if (caller) {
+ caller_event_string = ast_manager_build_channel_state_string(caller);
+ if (!caller_event_string) {
+ ast_log(AST_LOG_NOTICE, "No caller event string, bailing\n");
+ return;
+ }
+ }
+
agent = ast_multi_channel_blob_get_channel(obj, "agent");
-
- caller_event_string = ast_manager_build_channel_state_string(caller);
- agent_event_string = ast_manager_build_channel_state_string_prefix(agent, "Dest");
-
- if (!caller_event_string || !agent_event_string) {
- return;
+ if (agent) {
+ agent_event_string = ast_manager_build_channel_state_string_prefix(agent, "Dest");
+ if (!agent_event_string) {
+ ast_log(AST_LOG_NOTICE, "No agent event string, bailing\n");
+ return;
+ }
}
event_string = ast_manager_str_from_json_object(ast_multi_channel_blob_get_json(obj), NULL);
@@ -1888,8 +1896,8 @@
"%s"
"%s"
"%s",
- ast_str_buffer(caller_event_string),
- ast_str_buffer(agent_event_string),
+ caller_event_string ? ast_str_buffer(caller_event_string) : "",
+ agent_event_string ? ast_str_buffer(agent_event_string) : "",
ast_str_buffer(event_string));
}
@@ -1925,7 +1933,9 @@
}
ast_multi_channel_blob_add_channel(payload, "caller", caller_snapshot);
- ast_multi_channel_blob_add_channel(payload, "agent", agent_snapshot);
+ if (agent_snapshot) {
+ ast_multi_channel_blob_add_channel(payload, "agent", agent_snapshot);
+ }
msg = stasis_message_create(type, payload);
if (!msg) {
@@ -5150,9 +5160,6 @@
const char *reason = NULL; /* silence dumb compilers */
RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
- ast_assert(peer != NULL);
- ast_assert(caller != NULL);
-
switch (rsn) {
case CALLER:
reason = "caller";
@@ -5729,7 +5736,7 @@
ast_debug(3, "Detected hangup of queue %s channel %s\n", reason == CALLER ? "caller" : "member",
channel_blob->snapshot->name);
- ast_queue_log(queue_data->queue->name, caller_snapshot->uniqueid, queue_data->member->membername,
+ ast_queue_log(queue_data->queue->name, queue_data->caller_uniqueid, queue_data->member->membername,
reason == CALLER ? "COMPLETECALLER" : "COMPLETEAGENT", "%ld|%ld|%d",
(long) (queue_data->starttime - queue_data->holdstart),
(long) (time(NULL) - queue_data->starttime), queue_data->caller_pos);
Modified: team/group/performance/apps/app_stack.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/apps/app_stack.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/apps/app_stack.c (original)
+++ team/group/performance/apps/app_stack.c Thu Oct 3 13:32:30 2013
@@ -1215,8 +1215,7 @@
ast_agi_send(agi->fd, chan, "200 result=%d Gosub failed\n", res);
}
- /* Must use free because the memory was allocated by asprintf(). */
- free(gosub_args);
+ ast_free(gosub_args);
ast_channel_lock(chan);
ast_debug(4, "%s Ending location: %s,%s,%d\n", ast_channel_name(chan),
Modified: team/group/performance/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/chan_dahdi.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/chan_dahdi.c (original)
+++ team/group/performance/channels/chan_dahdi.c Thu Oct 3 13:32:30 2013
@@ -9726,16 +9726,34 @@
getforward = 0;
memset(exten, 0, sizeof(exten));
len = 0;
- } else if ((p->transfer || p->canpark) && is_exten_parking &&
- p->subs[SUB_THREEWAY].owner) {
- RAII_VAR(struct ast_bridge_channel *, bridge_channel, NULL, ao2_cleanup);
- /* This is a three way call, the main call being a real channel,
- and we're parking the first call. */
- ast_channel_lock(chan);
- bridge_channel = ast_channel_get_bridge_channel(chan);
- ast_channel_unlock(chan);
- if (bridge_channel && !ast_parking_blind_transfer_park(bridge_channel, ast_channel_context(chan), exten)) {
- ast_verb(3, "Parking call to '%s'\n", ast_channel_name(chan));
+ } else if ((p->transfer || p->canpark) && is_exten_parking
+ && p->subs[SUB_THREEWAY].owner) {
+ struct ast_bridge_channel *bridge_channel;
+
+ /*
+ * This is a three way call, the main call being a real channel,
+ * and we're parking the first call.
+ */
+ ast_channel_lock(p->subs[SUB_THREEWAY].owner);
+ bridge_channel = ast_channel_get_bridge_channel(p->subs[SUB_THREEWAY].owner);
+ ast_channel_unlock(p->subs[SUB_THREEWAY].owner);
+ if (bridge_channel) {
+ if (!ast_parking_blind_transfer_park(bridge_channel, ast_channel_context(chan), exten)) {
+ /*
+ * Swap things around between the three-way and real call so we
+ * can hear where the channel got parked.
+ */
+ ast_mutex_lock(&p->lock);
+ p->owner = p->subs[SUB_THREEWAY].owner;
+ swap_subs(p, SUB_THREEWAY, SUB_REAL);
+ ast_mutex_unlock(&p->lock);
+
+ ast_verb(3, "%s: Parked call\n", ast_channel_name(chan));
+ ast_hangup(chan);
+ ao2_ref(bridge_channel, -1);
+ goto quit;
+ }
+ ao2_ref(bridge_channel, -1);
}
break;
} else if (p->hidecallerid && !strcmp(exten, "*82")) {
Modified: team/group/performance/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/chan_iax2.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/chan_iax2.c (original)
+++ team/group/performance/channels/chan_iax2.c Thu Oct 3 13:32:30 2013
@@ -8615,7 +8615,7 @@
"cause", "Expired");
ast_endpoint_blob_publish(peer->endpoint, ast_endpoint_state_type(), blob);
/* modify entry in peercnts table as _not_ registered */
- peercnt_modify(0, 0, &peer->addr);
+ peercnt_modify((unsigned char) 0, 0, &peer->addr);
/* Reset the address */
memset(&peer->addr, 0, sizeof(peer->addr));
/* Reset expiry value */
@@ -8759,7 +8759,7 @@
}
/* modify entry in peercnts table as _not_ registered */
- peercnt_modify(0, 0, &p->addr);
+ peercnt_modify((unsigned char) 0, 0, &p->addr);
/* Stash the IP address from which they registered */
ast_sockaddr_from_sin(&p->addr, sin);
@@ -8796,7 +8796,7 @@
/* modify entry in peercnts table as registered */
if (p->maxcallno) {
- peercnt_modify(1, p->maxcallno, &p->addr);
+ peercnt_modify((unsigned char) 1, p->maxcallno, &p->addr);
}
/* Make sure our call still exists, an INVAL at the right point may make it go away */
@@ -12417,7 +12417,7 @@
peer->pokefreqok = DEFAULT_FREQ_OK;
peer->pokefreqnotok = DEFAULT_FREQ_NOTOK;
peer->maxcallno = 0;
- peercnt_modify(0, 0, &peer->addr);
+ peercnt_modify((unsigned char) 0, 0, &peer->addr);
peer->calltoken_required = CALLTOKEN_DEFAULT;
ast_string_field_set(peer,context,"");
ast_string_field_set(peer,peercontext,"");
@@ -12605,7 +12605,7 @@
if (sscanf(v->value, "%10hu", &peer->maxcallno) != 1) {
ast_log(LOG_WARNING, "maxcallnumbers must be set to a valid number. %s is not valid at line %d.\n", v->value, v->lineno);
} else {
- peercnt_modify(1, peer->maxcallno, &peer->addr);
+ peercnt_modify((unsigned char) 1, peer->maxcallno, &peer->addr);
}
} else if (!strcasecmp(v->name, "requirecalltoken")) {
/* default is required unless in optional ip list */
Modified: team/group/performance/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/chan_sip.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/chan_sip.c (original)
+++ team/group/performance/channels/chan_sip.c Thu Oct 3 13:32:30 2013
@@ -819,6 +819,7 @@
static int global_rtpkeepalive; /*!< Send RTP keepalives */
static int global_reg_timeout; /*!< Global time between attempts for outbound registrations */
static int global_regattempts_max; /*!< Registration attempts before giving up */
+static int global_reg_retry_403; /*!< Treat 403 responses to registrations as 401 responses */
static int global_shrinkcallerid; /*!< enable or disable shrinking of caller id */
static int global_callcounter; /*!< Enable call counters for all devices. This is currently enabled by setting the peer
* call-limit to INT_MAX. When we remove the call-limit from the code, we can make it
@@ -18712,9 +18713,9 @@
int sipmethod, const char *uri, enum xmittype reliable,
struct ast_sockaddr *addr, struct sip_peer **authpeer)
{
- char from[256] = "", *of, *name, *unused_password, *domain;
+ char from[256], *of, *name, *unused_password, *domain;
enum check_auth_result res = AUTH_DONT_KNOW;
- char calleridname[50];
+ char calleridname[256];
char *uri2 = ast_strdupa(uri);
terminate_uri(uri2); /* trim extra stuff */
@@ -21154,6 +21155,7 @@
ast_cli(a->fd, " Sub. max duration: %d secs\n", max_subexpiry);
ast_cli(a->fd, " Outbound reg. timeout: %d secs\n", global_reg_timeout);
ast_cli(a->fd, " Outbound reg. attempts: %d\n", global_regattempts_max);
+ ast_cli(a->fd, " Outbound reg. retry 403:%d\n", global_reg_retry_403);
ast_cli(a->fd, " Notify ringing state: %s\n", AST_CLI_YESNO(sip_cfg.notifyringing));
if (sip_cfg.notifyringing) {
ast_cli(a->fd, " Include CID: %s%s\n",
@@ -23261,6 +23263,15 @@
ast_set_flag(&p->flags[0], SIP_PENDINGBYE);
}
ast_rtp_instance_activate(p->rtp);
+ } else if (!reinvite) {
+ struct ast_sockaddr remote_address = {{0,}};
+
+ ast_rtp_instance_get_remote_address(p->rtp, &remote_address);
+ if (ast_sockaddr_isnull(&remote_address) || (!ast_strlen_zero(p->theirprovtag) && strcmp(p->theirtag, p->theirprovtag))) {
+ ast_log(LOG_WARNING, "Received response: \"200 OK\" from '%s' without SDP\n", p->relatedpeer->name);
+ ast_set_flag(&p->flags[0], SIP_PENDINGBYE);
+ ast_rtp_instance_activate(p->rtp);
+ }
}
if (!req->ignore && p->owner) {
@@ -24211,7 +24222,11 @@
gettag(req, "To", tag, sizeof(tag));
ast_string_field_set(p, theirtag, tag);
- }
+ } else {
+ /* Store theirtag to track for changes when 200 responses to invites are received without SDP */
+ ast_string_field_set(p, theirprovtag, p->theirtag);
+ }
+
/* This needs to be configurable on a channel/peer level,
not mandatory for all communication. Sadly enough, NAT implementations
are not so stable so we can always rely on these headers.
@@ -31379,6 +31394,7 @@
sip_cfg.compactheaders = DEFAULT_COMPACTHEADERS;
global_reg_timeout = DEFAULT_REGISTRATION_TIMEOUT;
global_regattempts_max = 0;
+ global_reg_retry_403 = 0;
sip_cfg.pedanticsipchecking = DEFAULT_PEDANTIC;
sip_cfg.autocreatepeer = DEFAULT_AUTOCREATEPEER;
global_autoframing = 0;
@@ -31767,6 +31783,8 @@
}
} else if (!strcasecmp(v->name, "registerattempts")) {
global_regattempts_max = atoi(v->value);
+ } else if (!strcasecmp(v->name, "register_retry_403")) {
+ global_reg_retry_403 = ast_true(v->value);
} else if (!strcasecmp(v->name, "bindaddr") || !strcasecmp(v->name, "udpbindaddr")) {
if (ast_parse_arg(v->value, PARSE_ADDR, &bindaddr)) {
ast_log(LOG_WARNING, "Invalid address: %s\n", v->value);
Modified: team/group/performance/channels/chan_vpb.cc
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/chan_vpb.cc?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/chan_vpb.cc (original)
+++ team/group/performance/channels/chan_vpb.cc Thu Oct 3 13:32:30 2013
@@ -2673,10 +2673,12 @@
struct ast_format tmpfmt;
int num_cards = 0;
- if (!(vpb_tech.capabilities = ast_format_cap_alloc())) {
+ vpb_tech.capabilities = ast_format_cap_alloc((enum ast_format_cap_flags) 0);
+ if (!vpb_tech.capabilities) {
return AST_MODULE_LOAD_DECLINE;
}
- if (!(vpb_tech_indicate.capabilities = ast_format_cap_alloc())) {
+ vpb_tech_indicate.capabilities = ast_format_cap_alloc((enum ast_format_cap_flags) 0);
+ if (!vpb_tech_indicate.capabilities) {
return AST_MODULE_LOAD_DECLINE;
}
ast_format_cap_add(vpb_tech.capabilities, ast_format_set(&tmpfmt, AST_FORMAT_SLINEAR, 0));
Modified: team/group/performance/channels/sig_analog.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/sig_analog.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/sig_analog.c (original)
+++ team/group/performance/channels/sig_analog.c Thu Oct 3 13:32:30 2013
@@ -2245,18 +2245,35 @@
getforward = 0;
memset(exten, 0, sizeof(exten));
len = 0;
- } else if ((p->transfer || p->canpark) && is_exten_parking &&
- p->subs[ANALOG_SUB_THREEWAY].owner) {
+ } else if ((p->transfer || p->canpark) && is_exten_parking
+ && p->subs[ANALOG_SUB_THREEWAY].owner) {
struct ast_bridge_channel *bridge_channel;
- /* This is a three way call, the main call being a real channel,
- and we're parking the first call. */
- ast_channel_lock(chan);
- bridge_channel = ast_channel_get_bridge_channel(chan);
- ast_channel_unlock(chan);
- if (bridge_channel && !ast_parking_blind_transfer_park(bridge_channel, ast_channel_context(chan), exten)) {
- ast_verb(3, "Parking call to '%s'\n", ast_channel_name(chan));
- }
- ao2_ref(bridge_channel, -1);
+
+ /*
+ * This is a three way call, the main call being a real channel,
+ * and we're parking the first call.
+ */
+ ast_channel_lock(p->subs[ANALOG_SUB_THREEWAY].owner);
+ bridge_channel = ast_channel_get_bridge_channel(p->subs[ANALOG_SUB_THREEWAY].owner);
+ ast_channel_unlock(p->subs[ANALOG_SUB_THREEWAY].owner);
+ if (bridge_channel) {
+ if (!ast_parking_blind_transfer_park(bridge_channel, ast_channel_context(chan), exten)) {
+ /*
+ * Swap things around between the three-way and real call so we
+ * can hear where the channel got parked.
+ */
+ analog_lock_private(p);
+ analog_set_new_owner(p, p->subs[ANALOG_SUB_THREEWAY].owner);
+ analog_swap_subs(p, ANALOG_SUB_THREEWAY, ANALOG_SUB_REAL);
+ analog_unlock_private(p);
+
+ ast_verb(3, "%s: Parked call\n", ast_channel_name(chan));
+ ast_hangup(chan);
+ ao2_ref(bridge_channel, -1);
+ goto quit;
+ }
+ ao2_ref(bridge_channel, -1);
+ }
break;
} else if (!ast_strlen_zero(p->lastcid_num) && !strcmp(exten, "*60")) {
ast_verb(3, "Blacklisting number %s\n", p->lastcid_num);
Modified: team/group/performance/channels/sig_pri.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/sig_pri.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/sig_pri.c (original)
+++ team/group/performance/channels/sig_pri.c Thu Oct 3 13:32:30 2013
@@ -6473,6 +6473,7 @@
ast_mutex_lock(&pri->lock);
sig_pri_lock_private(pri->pvts[chanpos]);
if (c) {
+ ast_channel_stage_snapshot(c);
#if defined(HAVE_PRI_SUBADDR)
if (e->ring.calling.subaddress.valid) {
/* Set Calling Subaddress */
@@ -6557,6 +6558,7 @@
PVT_TO_CHANNEL(pri->pvts[chanpos]), 1);
#endif
}
+ ast_channel_stage_snapshot_done(c);
}
if (c && !ast_pthread_create_detached(&threadid, NULL, pri_ss_thread, pri->pvts[chanpos])) {
ast_verb(3, "Accepting overlap call from '%s' to '%s' on channel %d/%d, span %d\n",
@@ -6602,6 +6604,7 @@
* will do anything with the channel we have just
* created.
*/
+ ast_channel_stage_snapshot(c);
#if defined(HAVE_PRI_SUBADDR)
if (e->ring.calling.subaddress.valid) {
/* Set Calling Subaddress */
@@ -6670,6 +6673,8 @@
sig_pri_handle_subcmds(pri, chanpos, e->e, e->ring.subcmds,
e->ring.call);
+
+ ast_channel_stage_snapshot_done(c);
}
if (c && !ast_pbx_start(c)) {
ast_verb(3, "Accepting call from '%s' to '%s' on channel %d/%d, span %d\n",
Modified: team/group/performance/channels/sig_ss7.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/sig_ss7.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/sig_ss7.c (original)
+++ team/group/performance/channels/sig_ss7.c Thu Oct 3 13:32:30 2013
@@ -42,6 +42,7 @@
#include "asterisk/musiconhold.h"
#include "asterisk/cli.h"
#include "asterisk/transcap.h"
+#include "asterisk/stasis_channels.h"
#include "sig_ss7.h"
#if defined(LIBSS7_ABI_COMPATIBILITY)
@@ -621,6 +622,8 @@
sig_ss7_set_echocanceller(p, 1);
+ ast_channel_stage_snapshot(c);
+
/*
* It is reasonably safe to set the following
* channel variables while the channel private
@@ -699,6 +702,8 @@
/* Clear this after we set it */
p->generic_name[0] = 0;
}
+
+ ast_channel_stage_snapshot_done(c);
sig_ss7_unlock_private(p);
ast_channel_unlock(c);
Modified: team/group/performance/channels/sip/include/sip.h
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/sip/include/sip.h?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/sip/include/sip.h (original)
+++ team/group/performance/channels/sip/include/sip.h Thu Oct 3 13:32:30 2013
@@ -1019,6 +1019,7 @@
AST_STRING_FIELD(rdnis); /*!< Referring DNIS */
AST_STRING_FIELD(redircause); /*!< Referring cause */
AST_STRING_FIELD(theirtag); /*!< Their tag */
+ AST_STRING_FIELD(theirprovtag); /*!< Provisional their tag, used when evaluating responses to invites */
AST_STRING_FIELD(tag); /*!< Our tag for this session */
AST_STRING_FIELD(username); /*!< [user] name */
AST_STRING_FIELD(peername); /*!< [peer] name, not set if [user] */
Modified: team/group/performance/channels/sip/reqresp_parser.c
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/channels/sip/reqresp_parser.c?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/channels/sip/reqresp_parser.c (original)
+++ team/group/performance/channels/sip/reqresp_parser.c Thu Oct 3 13:32:30 2013
@@ -806,7 +806,7 @@
int get_name_and_number(const char *hdr, char **name, char **number)
{
char header[256];
- char tmp_name[50];
+ char tmp_name[256];
char *tmp_number = NULL;
char *hostport = NULL;
char *dummy = NULL;
Modified: team/group/performance/configs/features.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/configs/features.conf.sample?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/configs/features.conf.sample (original)
+++ team/group/performance/configs/features.conf.sample Thu Oct 3 13:32:30 2013
@@ -1,101 +1,10 @@
;
-; Sample Call Features (parking, transfer, etc) configuration
+; Sample Call Features (transfer, monitor/mixmonitor, etc) configuration
;
+; Asterisk 12 Note - All parking lot configuration is now done in res_parking.conf
+
[general]
-parkext => 700 ; What extension to dial to park. Set per parking lot.
-;parkext_exclusive=yes ; Specify that the parkext created for this parking lot
- ; will only access this parking lot. (default is no)
-parkpos => 701-720 ; What extensions to park calls on. (defafult parking lot)
- ; These need to be numeric, as Asterisk starts from the start position
- ; and increments with one for the next parked call.
- ; Set per parking lot.
-context => parkedcalls ; Which context parked calls are in (default parking lot)
- ; Set per parking lot.
-;parkinghints = no ; Add hints priorities automatically for parking slots (default is no).
- ; Set per parking lot.
-;parkingtime => 45 ; Number of seconds a call can be parked before returning.
- ; Set per parking lot. (default is 45 seconds)
-
-;comebacktoorigin = yes ; Setting this option configures the behavior of call parking when the
- ; parked call times out (See the parkingtime option). The default value is 'yes'.
- ; Set per parking lot.
- ;
- ; 'yes' - When the parked call times out, attempt to send the call back to the peer
- ; that parked this call. This is done by saving off the name of the channel
- ; that parked the call. The call will return to the context 'park-dial' and
- ; an extension created based on the name of the channel that originally parked
- ; the call. This extension will be created automatically to do a Dial() to the
- ; device that originally parked the call for comebacktodialtime seconds. If the
- ; call is not answered, the call will proceed to the next priority (usually none
- ; unless you deliberately set up a catch-all second priority in the park-call
- ; context) in the dialplan for extension matching the peer name (same as how
- ; peer names are flattened into extensions when comebacktoorigin is 'no').
- ;
- ; 'no' - This option is useful for performing custom dialplan functionality prior to
- ; sending the call back to the extension that initially parked the call, or to
- ; an entirely different destination.
- ;
- ; When the parked call times out, send it back to the dialplan. The location
- ; will be defined by the comebackcontext option. The extension will be built from
- ; the saved channel name that parked the call. For example, if a SIP peer named
- ; '0004F2040001' parked this call, the extension will be 'SIP_0004F2040001'.
- ; (Note that an underscore is used here because the '/' character has a special
- ; meaning in extension names for CallerID matching.) If this extension does not
- ; exist, the call will be sent to the 's' extension, instead. Finally, if the 's'
- ; extension of 'parkedcallstimeout' does not exist, the call will fall back to the
- ; 's' extension of the 'default' context.
- ;
- ; Additionally, in this example an extension of 'SIP_0004F2040001' will be
- ; created in the 'park-dial' context. This extension will be set up to do a
- ; Dial() to 'SIP/0004F2040001'.
- ;
- ; During the timeout procedure, the following variables are set
- ; PARKINGSLOT - extension that the call was parked in prior to timing out
- ; PARKEDLOT - name of the lot that the call was parked in prior to timing out
- ; PARKER - name of the device that parked the call
-
-;comebackdialtime = 30 ; When a parked call times out, this is the number of seconds to dial the device that
- ; originally parked the call. It is also available as a channel variable COMEBACKDIALTIME
- ; after a parked call has timed out.
- ; The default value is 30 seconds.
- ; Set per parking lot.
-
-;comebackcontext = parkedcallstimeout
- ; The context a timed out call will return to if comebcktoorigin=no.
- ; The default value is 'parkedcallstimeout'.
- ; Set per parking lot.
-
-;courtesytone = beep ; Sound file to play to when someone picks up a parked call
- ; and also when the Touch Monitor is activated/deactivated.
- ; Default is no tone.
-;parkedplay = caller ; Who to play courtesytone to when picking up a parked call.
- ; One of: parked, caller, both (default is caller)
- ; Operates on all parking lots.
-;parkedcalltransfers = caller ; Enables or disables DTMF based transfers when picking up a parked call.
- ; one of: callee, caller, both, no (default is no)
- ; Set per parking lot.
-;parkedcallreparking = caller ; Enables or disables DTMF based parking when picking up a parked call.
- ; one of: callee, caller, both, no (default is no)
- ; Set per parking lot.
-;parkedcallhangup = caller ; Enables or disables DTMF based hangups when picking up a parked call.
- ; one of: callee, caller, both, no (default is no)
- ; Set per parking lot.
-;parkedcallrecording = caller ; Enables or disables DTMF based one-touch recording when picking up a parked call.
- ; one of: callee, caller, both, no (default is no)
- ; Set per parking lot.
-;parkeddynamic = yes ; Enables dynamically created parkinglots. (default is no)
- ; Operates on all parking lots.
-;adsipark = yes ; if you want ADSI parking announcements
- ; Operates on all parking lots.
-;findslot => next ; Continue to the 'next' free parking space.
- ; Defaults to 'first' available
- ; Set per parking lot.
-;parkedmusicclass=default ; This is the MOH class to use for the parked channel
- ; as long as the class is not set on the channel directly
- ; using Set(CHANNEL(musicclass)=whatever) in the dialplan
- ; Set per parking lot.
-
;transferdigittimeout => 3 ; Number of seconds to wait between digits when transferring a call
; (default is 3 seconds)
;xfersound = beep ; to indicate an attended transfer is complete
@@ -116,29 +25,10 @@
;atxfercallbackretries = 2 ; Number of times to attempt to send the call back to the transferer.
; By default, this is 2.
-;
-;*** Define another parking lot
-;
-; You can set parkinglot with the CHANNEL dialplan function
-; or by setting 'parkinglot' directly in the channel configuration file.
-;
-; (Note: Leading '0's and any non-numerical characters on parkpos extensions
-; will be ignored. Parkext on the other hand can be any string.)
-;
-;[parkinglot_edvina]
-;context => edvinapark
-;parkext => 799
-;parkpos => 800-850
-;findslot => next
-;comebacktoorigin = no
-;comebackdialtime = 90
-;comebackcontext = edvinapark-timeout ; Make sure you create the context!
-;parkedmusicclass = edvina
; Note that the DTMF features listed below only work when two channels have answered and are bridged together.
; They can not be used while the remote party is ringing or in progress. If you require this feature you can use
; chan_local in combination with Answer to accomplish it.
-
[featuremap]
;blindxfer => #1 ; Blind transfer (default is #) -- Make sure to set the T and/or t option in the Dial() or Queue() app call!
Modified: team/group/performance/configs/pjsip.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/configs/pjsip.conf.sample?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/configs/pjsip.conf.sample (original)
+++ team/group/performance/configs/pjsip.conf.sample Thu Oct 3 13:32:30 2013
@@ -147,6 +147,7 @@
;client_uri=sip:1234567890 at sip.example.com
;contact_user=1234567890
;retry_interval=60
+;forbidden_retry_interval=600
;expiration=3600
;[mytrunk_auth]
Modified: team/group/performance/configs/res_parking.conf.sample
URL: http://svnview.digium.com/svn/asterisk/team/group/performance/configs/res_parking.conf.sample?view=diff&rev=400396&r1=400395&r2=400396
==============================================================================
--- team/group/performance/configs/res_parking.conf.sample (original)
+++ team/group/performance/configs/res_parking.conf.sample Thu Oct 3 13:32:30 2013
@@ -1,48 +1,121 @@
[general]
-;parkeddynamic = yes ; Enables dynamically created parkinglots. (default is no)
-
+;parkeddynamic = yes ; Enables dynamically created parkinglots. (default is no)
; A parking lot named 'default' will automatically be used when no other
; named parking lot is indicated for use by the park application or a
-; channel's parkinglot function and PARKINGLOT channel variable.
+; channel's parkinglot function and PARKINGLOT channel variable. This parking
+; lot is guaranteed to exist and will be created even if default is left out of
+; the configuration file.
-[default] ; based on the old default from features.conf.sample
-parkext => 700
-;parkext_exclusive=yes
-parkpos => 701-720
-context => parkedcalls
-;parkinghints = no
-;parkingtime => 45
-;comebacktoorigin = yes
-;comebackdialtime = 30
+[default] ; Default Parking Lot
+parkext => 700 ; What extension to dial to park. (optional; if
+ ; specified, extensions will be created for parkext and
+ ; the whole range of parkpos)
+
+;parkext_exclusive=yes ; Specify that the parkext created for this parking lot
+ ; will only access this parking lot. (default is no)
+
+parkpos => 701-720 ; What range of parking spaces to use - must be numeric
+ ; Creates these spaces as extensions if parkext is set.
+ ; Since this value is interpreted numerically, leading 0's
+ ; will be ignored (so expect 00700-00720 to map to 700-720)
+
+context => parkedcalls ; Which context parked calls and the default park
+
+;parkinghints = no ; Add hints priorities automatically for parkpos
+ ; extensions if parkext is set
+
+;parkingtime => 45 ; Number of seconds a call can be parked before returning
+
+;comebacktoorigin = yes ; Setting this option configures the behavior of call parking when the
+ ; parked call times out (See the parkingtime option). The default value is 'yes'.
+ ;
+ ; 'yes' - When the parked call times out, attempt to send the call back to the peer
+ ; that parked this call. This is done by saving off the name of the channel
+ ; that parked the call. The call will return to the context 'park-dial' and
+ ; an extension created based on the name of the channel that originally parked
+ ; the call. This extension will be created automatically to do a Dial() to the
+ ; device that originally parked the call for comebacktodialtime seconds. If the
+ ; call is not answered, the call will proceed to the next priority (usually none
+ ; unless you deliberately set up a catch-all second priority in the park-call
+ ; context) in the dialplan for extension matching the peer name (same as how
+ ; peer names are flattened into extensions when comebacktoorigin is 'no').
+ ;
+ ; 'no' - This option is useful for performing custom dialplan functionality prior to
[... 2307 lines stripped ...]
More information about the asterisk-commits
mailing list