[-]
[+]
|
Changed |
asterisk.changes
|
|
[-]
[+]
|
Changed |
asterisk.spec
^
|
|
[-]
[+]
|
Deleted |
asterisk-1.8.15.1.tar.xz/asterisk-1.8.15.1-summary.html
^
|
@@ -1,63 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - asterisk-1.8.15.1</title></head>
-<body>
-<h1 align="center"><a name="top">Release Summary</a></h1>
-<h3 align="center">asterisk-1.8.15.1</h3>
-<h3 align="center">Date: 2012-08-30</h3>
-<h3 align="center"><asteriskteam@digium.com></h3>
-<hr/>
-<h2 align="center">Table of Contents</h2>
-<ol>
- <li><a href="#summary">Summary</a></li>
- <li><a href="#contributors">Contributors</a></li>
- <li><a href="#commits">Other Changes</a></li>
- <li><a href="#diffstat">Diffstat</a></li>
-</ol>
-<hr/>
-<a name="summary"><h2 align="center">Summary</h2></a>
-<center><a href="#top">[Back to Top]</a></center><br/><p>This release has been made to address one or more security vulnerabilities that have been identified. A security advisory document has been published for each vulnerability that includes additional information. Users of versions of Asterisk that are affected are strongly encouraged to review the advisories and determine what action they should take to protect their systems from these issues.</p>
-<p>Security Advisories: <a href="http://downloads.asterisk.org/pub/security/AST-2012-012.html">AST-2012-012</a>, <a href="http://downloads.asterisk.org/pub/security/AST-2012-013.html">AST-2012-013</a></p>
-<p>The data in this summary reflects changes that have been made since the previous release, asterisk-1.8.15.0.</p>
-<hr/>
-<a name="contributors"><h2 align="center">Contributors</h2></a>
-<center><a href="#top">[Back to Top]</a></center><br/><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were closed by commits that went into this release.</p>
-<table width="100%" border="0">
-<tr>
-<td width="33%"><h3>Coders</h3></td>
-<td width="33%"><h3>Testers</h3></td>
-<td width="33%"><h3>Reporters</h3></td>
-</tr>
-<tr valign="top">
-<td>
-2 bebuild<br/>
-</td>
-<td>
-</td>
-<td>
-</td>
-</tr>
-</table>
-<hr/>
-<a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a>
-<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all changes that went into this release that did not directly close an issue from the issue tracker. The commits may have been marked as being related to an issue. If that is the case, the issue numbers are listed here, as well.</p>
-<table width="100%" border="1">
-<tr><td><b>Revision</b></td><td><b>Author</b></td><td><b>Summary</b></td><td><b>Issues Referenced</b></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/1.8.15.1?view=revision&revision=372053">372053</a></td><td>bebuild</td><td>Create 1.8.15.1</td>
-<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/1.8.15.1?view=revision&revision=372058">372058</a></td><td>bebuild</td><td>Commit fixes for AST-2012-012, AST-2012-013</td>
-<td></td></tr></table>
-<hr/>
-<a name="diffstat"><h2 align="center">Diffstat Results</h2></a>
-<center><a href="#top">[Back to Top]</a></center><br/><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p>
-<pre>
-.version | 2
-ChangeLog | 10
-README-SERIOUSLY.bestpractices.txt | 51 +++
-asterisk-1.8.15.0-summary.html | 382 ----------------------------
-asterisk-1.8.15.0-summary.txt | 491 -------------------------------------
-channels/chan_iax2.c | 11
-main/manager.c | 1
-7 files changed, 69 insertions(+), 879 deletions(-)
-</pre><br/>
-<hr/>
-</body>
-</html>
|
[-]
[+]
|
Deleted |
asterisk-1.8.15.1.tar.xz/asterisk-1.8.15.1-summary.txt
^
|
@@ -1,92 +0,0 @@
- Release Summary
-
- asterisk-1.8.15.1
-
- Date: 2012-08-30
-
- <asteriskteam@digium.com>
-
- ----------------------------------------------------------------------
-
- Table of Contents
-
- 1. Summary
- 2. Contributors
- 3. Other Changes
- 4. Diffstat
-
- ----------------------------------------------------------------------
-
- Summary
-
- [Back to Top]
-
- This release has been made to address one or more security vulnerabilities
- that have been identified. A security advisory document has been published
- for each vulnerability that includes additional information. Users of
- versions of Asterisk that are affected are strongly encouraged to review
- the advisories and determine what action they should take to protect their
- systems from these issues.
-
- Security Advisories: AST-2012-012, AST-2012-013
-
- The data in this summary reflects changes that have been made since the
- previous release, asterisk-1.8.15.0.
-
- ----------------------------------------------------------------------
-
- Contributors
-
- [Back to Top]
-
- This table lists the people who have submitted code, those that have
- tested patches, as well as those that reported issues on the issue tracker
- that were resolved in this release. For coders, the number is how many of
- their patches (of any size) were committed into this release. For testers,
- the number is the number of times their name was listed as assisting with
- testing a patch. Finally, for reporters, the number is the number of
- issues that they reported that were closed by commits that went into this
- release.
-
- Coders Testers Reporters
- 2 bebuild
-
- ----------------------------------------------------------------------
-
- Commits Not Associated with an Issue
-
- [Back to Top]
-
- This is a list of all changes that went into this release that did not
- directly close an issue from the issue tracker. The commits may have been
- marked as being related to an issue. If that is the case, the issue
- numbers are listed here, as well.
-
- +------------------------------------------------------------------------+
- | Revision | Author | Summary | Issues Referenced |
- |----------+---------+-------------------------------+-------------------|
- | 372053 | bebuild | Create 1.8.15.1 | |
- |----------+---------+-------------------------------+-------------------|
- | 372058 | bebuild | Commit fixes for | |
- | | | AST-2012-012, AST-2012-013 | |
- +------------------------------------------------------------------------+
-
- ----------------------------------------------------------------------
-
- Diffstat Results
-
- [Back to Top]
-
- This is a summary of the changes to the source code that went into this
- release that was generated using the diffstat utility.
-
- .version | 2
- ChangeLog | 10
- README-SERIOUSLY.bestpractices.txt | 51 +++
- asterisk-1.8.15.0-summary.html | 382 ----------------------------
- asterisk-1.8.15.0-summary.txt | 491 -------------------------------------
- channels/chan_iax2.c | 11
- main/manager.c | 1
- 7 files changed, 69 insertions(+), 879 deletions(-)
-
- ----------------------------------------------------------------------
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/.version
^
|
@@ -1 +1 @@
-1.8.15.1
+1.8.16.0
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/CHANGES
^
|
@@ -9,6 +9,18 @@
======================================================================
------------------------------------------------------------------------------
+--- Functionality changes since Asterisk 1.8.12.0 ----------------------------
+------------------------------------------------------------------------------
+
+Build System
+------------
+ * The optimization portion of the build system has been reworked to avoid
+ broken builds on certain architectures. All architecture-specific
+ optimization has been removed in favor of using -march=native to allow gcc
+ to detect the environment in which it is running when possible. This can
+ be toggled as BUILD_NATIVE under "Compiler Flags" in menuselect.
+
+------------------------------------------------------------------------------
--- Functionality changes since Asterisk 1.8.10.0 ----------------------------
------------------------------------------------------------------------------
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/ChangeLog
^
|
@@ -1,6 +1,10 @@
-2012-08-30 Asterisk Development Team <asteriskteam@digium.com>
+2012-09-13 Asterisk Development Team <asteriskteam@digium.com>
- * Asterisk 1.8.15.1 Released.
+ * Asterisk 1.8.16.0 Released.
+
+2012-09-11 Asterisk Development Team <asteriskteam@digium.com>
+
+ * Asterisk 1.8.16.0-rc2 Released.
* AST-2012-013: Resolve ACL rules being ignored during calls by some
IAX2 peers
@@ -8,6 +12,250 @@
* AST-2012-012: Resolve AMI User Unauthorized Shell Access through
ExternalIVR
+ * r371860: Fix hangup cause passthrough regression.
+
+ The v1.8 -r369258 change to fix the F and F(x) action logic
+ introduced a regression in passing the hangup cause from the called
+ channel to the caller channel.
+
+ (closes issue ASTERISK-20287)
+ Reported by: Konstantin Suvorov
+ Patches:
+ app_dial_hangupcause.patch (license #6421) patch uploaded by
+ Konstantin Suvorov (modified)
+ Tested by: rmudgett
+
+ * r372709: Only re-create an SRTP session when needed; respond with
+ correct crypto policy
+
+ In r356604, SRTP handling was fixed to accomodate multiple crypto
+ keys in an SDP offer and the ability to re-create an SRTP session
+ when the crypto keys changed. In certain circumstances - most
+ notably when a phone is put on hold after having been bridged for a
+ significant amount of time - the act of re-creating the SRTP session
+ causes problems for certain models of phones. The patch committed in
+ r356604 always re-created the SRTP session regardless of whether or
+ not the cryptographic keys changed. Since this is technically
+ not necessary, this patch modifies the behavior to only re-create the
+ SRTP session if Asterisk detects that the remote key has changed.
+ This allows models of phones that do not handle the SRTP session
+ changing to continue to work, while also providing the behavior
+ needed for those phones that do re-negotiate cryptographic keys.
+
+ In addition, in Asterisk 1.8 only, it was found that phones that
+ offer AES_CM_128_HMAC_SHA1_32 will end up with no audio if the phone
+ is the initiator of the call. The phone will send an INVITE request
+ specifying that AES_CM_128_HMAC_SHA1_32 be used for the cryptographic
+ policy; Asterisk will set its policy to that value. Unfortunately,
+ when the call is Answered and a 200 OK is sent back to the UA, the
+ policy sent in the response's SDP will be the hard coded value
+ AES_CM_128_HMAC_SHA1_80. This potentially results in Asterisk using
+ the INVITE request's policy of AES_CM_128_HMAC_SHA1_32, while the
+ phone uses Asterisk's response of AES_CM_128_HMAC_SHA1_80. Hilarity
+ ensues as both endpoints think the other is crazy.
+
+ This patch fixes that by caching the policy from the request and
+ responding with it. Note that this is not a problem in Asterisk 10
+ and later, as the ability to configure the policy was added in that
+ version.
+
+ (issue ASTERISK-20194)
+ Reported by: Nicolo Mazzon
+ Tested by: Nicolo Mazzon
+
+ Review: https://reviewboard.asterisk.org/r/2099
+
+ * r372840: Fix bad channel application data reference.
+
+ When channels get bridged due to an AMI bridge action
+ or a DTMF attended transfer, the two channels that
+ get bridged have their application data pointing to
+ the other channel's name. This means that if one channel
+ is hung up but the other moves on, it means that the
+ channel that moves on will have its application data
+ pointing at freed memory.
+
+ (issue ASTERISK-20335)
+
+2012-07-31 Asterisk Development Team <asteriskteam@digium.com>
+
+ * Asterisk 1.8.16.0-rc1 Released.
+
+2012-07-30 16:47 +0000 [r370563] Richard Mudgett <rmudgett@digium.com>
+
+ * channels/chan_misdn.c: Release B channel allocation on error path
+ in chan_misdn.
+
+2012-07-25 21:00 +0000 [r370494] Jonathan Rose <jrose@digium.com>
+
+ * res/res_agi.c: res_agi: Add message indicating need for \n
+ character in verbose message The while loop responsible for
+ reading AGI messages from a fastAGI service can end up looping
+ indefinitely when an AGI script fails to indicate the end of a
+ message with a \n character. This patch adds an indication that
+ we are expecting a \n character to end the message to make it
+ more clear to users that this is necessary if they are receiving
+ this warning over and over. (issue ASTERISK-20061) Reported by:
+ Eike Kuiper
+
+2012-07-24 16:53 +0000 [r370429] Kevin P. Fleming <kpfleming@digium.com>
+
+ * main/frame.c: Rewrite a comment that didn't adequately explain
+ the code it was documenting.
+
+2012-07-24 16:49 +0000 [r370428] Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+
+ * channels/chan_oss.c: chan_oss: fix "sample rate" error message
+
+2012-07-23 21:09 +0000 [r370360-370383] Kevin P. Fleming <kpfleming@digium.com>
+
+ * funcs/func_shell.c: Improve documentation for the SHELL()
+ dialplan function.
+
+ * main/channel.c: Free any datastores attached to dummy channels.
+ Revision 370205 added the use of a datastore attached to a dummy
+ channel to resolve a memory leak, but
+ ast_dummy_channel_destructor() in this branch did not free
+ datastores, resulting in a continued (but slightly smaller)
+ memory leak. This patch backports the change to free said
+ datastores from the Asterisk trunk. (related to issue AST-916)
+
+2012-07-19 22:07 +0000 [r370275] Richard Mudgett <rmudgett@digium.com>
+
+ * main/cel.c: Fix compiler warnings. gcc (GCC) 4.2.4 has problems
+ casting away constness.
+
+2012-07-19 22:00 +0000 [r370252-370273] Matthew Jordan <mjordan@digium.com>
+
+ * main/cel.c: Fix compilation error when MALLOC_DEBUG is enabled To
+ fix a memory leak in CEL, a channel datastore was introduced
+ whose destruction function pointer was pointed to the ast_free
+ macro. Without MALLOC_DEBUG enabled this compiles as fine, as
+ ast_free is defined as free. With MALLOC_DEBUG enabled, however,
+ ast_free takes on a definition from a different place then
+ utils.h, and became undefined. This patch resolves this by using
+ a reference to ast_free_ptr. When MALLOC_DEBUG is enabled, this
+ calls ast_free; when MALLOC_DEBUG is not enabled, this is defined
+ to be ast_free, which is defined to be free. (issue AST-916)
+ Reported by: Thomas Arimont
+
+ * res/res_rtp_asterisk.c: Handle extremely out of order RFC 2833
+ DTMF The current implementation of RFC 2833 DTMF handling in
+ res_rtp_asterisk will, if a packet arrives out of order, drop the
+ packet. This is to prevent duplicate ton generation in the
+ Asterisk core. Since the RTP layer does not buffer data itself,
+ this is the only option the RTP layer currently has for handling
+ packets that arrive out of order. For the most part, this doesn't
+ matter. For a particular digit, so long as a BEGIN packet arrives
+ before the first END packet, the digit will be produced. If
+ subsequent BEGIN packets arrive interleaved with the ENDs, they
+ will be dropped; likewise, if the BEGIN or END packets themselves
+ are out of order, those packets are dropped but sufficient
+ information is conveyed to the Asterisk core to produce the
+ appropriate digit. For certain sequences of DTMF packets - most
+ notably when, for a particular digit, an END packet arrives
+ before any BEGIN packet for that digit - this is a real problem.
+ When an END arrives before any BEGINs, the END packet is dropped
+ - but at the same time, it causes subsequent BEGIN packets for
+ that digit to be ignored. When the next in order END packet
+ arrives, it too is dropped - Asterisk believes that there was no
+ initial BEGIN. The solution this patch provides is to trust the
+ END packet to convey the information needed for the Asterisk core
+ to produce the DTMF digit. If we receive an END packet, and it: *
+ Has a timestamp greater then the last timestamp received from an
+ END packet * Does not have the same sequence number as the last
+ received sequence number (and is thus not an END packet
+ retransmission) Then we send the END frame up to the Asterisk
+ core. It contains enough DTMF information for Asterisk to produce
+ the digit. On the other hand, if we receive a BEGIN or
+ continuation packet that occurs with a timestamp equal to or less
+ then the last END timestamp, then we've received something out of
+ order - but we already have received enough information to
+ produce the digit. These packets are dropped. Much thanks goes to
+ Olle Johansson (oej) for providing the idea for this solution.
+ Review: https://reviewboard.asterisk.org/r/2033/ (issue
+ ASTERISK-18404) Reporter: Stephane Chazelas Tested by: Matt
+ Jordan
+
+2012-07-18 19:12 +0000 [r370183-370205] Kevin P. Fleming <kpfleming@digium.com>
+
+ * main/cel.c: Resolve severe memory leak in CEL logging modules. A
+ customer reported a significant memory leak using Asterisk 1.8.
+ They have tracked it down to
+ ast_cel_fabricate_channel_from_event() in main/cel.c, which is
+ called by both in-tree CEL logging modules (cel_custom.c and
+ cel_sqlite3_custom.c) for each and every CEL event that they log.
+ The cause was an incorrect assumption about how data attached to
+ an ast_channel would be handled when the channel is destroyed;
+ the data is now stored in a datastore attached to the channel,
+ which is destroyed along with the channel at the proper time.
+ (closes issue AST-916) Review:
+ https://reviewboard.asterisk.org/r/2053/
+
+ * apps/app_macro.c, channels/chan_iax2.c, apps/app_mixmonitor.c,
+ apps/app_stack.c, funcs/func_global.c, res/res_odbc.c,
+ main/channel.c, addons/app_mysql.c, main/pbx.c,
+ funcs/func_curl.c, main/ccss.c, funcs/func_odbc.c,
+ funcs/func_lock.c: Ensure that all ast_datastore_info structures
+ are 'const'. While addressing a bug, I came across a instance of
+ 'struct ast_datastore_info' that was not declared 'const'. Since
+ the API already expects them to be 'const', this patch changes
+ the declarations of all existing instances that were not already
+ declared that way.
+
+2012-07-16 19:50 +0000 [r370131] Walter Doekes <walter+asterisk@wjd.nu>
+
+ * channels/chan_sip.c: Code cleanup and bugfix in chan_sip
+ outboundproxy parsing. The bug was clearing the global
+ outboundproxy when a peer-specific outboundproxy was bad. The
+ cleanup reduces duplicate code. Review:
+ https://reviewboard.asterisk.org/r/2034/ Reviewed by: Mark
+ Michelson
+
+2012-07-16 13:44 +0000 [r370081] Kinsey Moore <kmoore@digium.com>
+
+ * UPGRADE.txt, CHANGES: Add comments about the BUILD_NATIVE change
+ This is a significant change and mention of it should have gone
+ into UPGRADE.txt and CHANGES.
+
+2012-07-12 20:15 +0000 [r370017] Richard Mudgett <rmudgett@digium.com>
+
+ * channels/chan_dahdi.c, channels/sig_analog.c: Add missing
+ ast_hangup() calls on some analog exception paths. Make starting
+ analog_ss_thread() or __analog_ss_thread() failure paths hangup
+ the channel.
+
+2012-07-12 20:05 +0000 [r369993-370014] Kinsey Moore <kmoore@digium.com>
+
+ * channels/chan_sip.c: Include Expires header for SIP PUBLISH
+ requests RFC3903 requres SIP PUBLISH requests to have Expires
+ headers, so add them. Review:
+ https://reviewboard.asterisk.org/r/2003/ Patch-by: gareth
+
+ * channels/chan_sip.c: Prevent double uri_escaping in chan_sip when
+ pedantic is enabled If pedantic mode is enabled, outbound invites
+ will have double-escaped contacts. This avoids setting an
+ already-escaped string into a field where it is expected to be
+ unescaped. (closes issue ASTERISK-20023) Reported-by: Walter
+ Doekes
+
+2012-07-12 14:23 +0000 [r369970] Michael L. Young <elgueromexicano@gmail.com>
+
+ * funcs/func_math.c: Correct Documentation For DEC Function The
+ documentation for DEC in func_math.c was incorrect. Looks like a
+ copy and paste error. (Closes issue ASTERISK-20095) Reported by:
+ Billy Chia Tested by: Michael L. Young Patches: func_math.patch
+ uploaded by Billy Chia (license 6381)
+
+2012-07-11 17:08 +0000 [r369937] Tilghman Lesher <tilghman@meg.abyt.es>
+
+ * funcs/func_realtime.c: Allow the REALTIME() function to report
+ errors back to the caller. Also, do more error checking on the
+ arguments specified to the REALTIME() function and clarify the
+ documentation. While I was editing the file, a few coding
+ guidelines fixups, as well. Review:
+ https://reviewboard.asterisk.org/r/2031/
+
2012-07-30 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 1.8.15.0 Released.
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/UPGRADE.txt
^
|
@@ -18,6 +18,11 @@
===
===========================================================
+From 1.8.12 to 1.8.13:
+* The complex processor detection and optimization has been removed from
+ the makefile in favor of using native optimization suppport when available.
+ BUILD_NATIVE can be disabled via menuselect under "Compiler Flags".
+
From 1.8.11 to 1.8.12:
* In AEL dialplans, the "h" extension will now be inherited from prior
calling contexts, just as it had in 1.4. If you have created an AEL
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/addons/app_mysql.c
^
|
@@ -106,7 +106,7 @@
static void mysql_ds_destroy(void *data);
static void mysql_ds_fixup(void *data, struct ast_channel *oldchan, struct ast_channel *newchan);
-static struct ast_datastore_info mysql_ds_info = {
+static const struct ast_datastore_info mysql_ds_info = {
.type = "APP_ADDON_SQL_MYSQL",
.destroy = mysql_ds_destroy,
.chan_fixup = mysql_ds_fixup,
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/apps/app_dial.c
^
|
@@ -33,7 +33,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369258 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372845 $")
#include <sys/time.h>
#include <sys/signal.h>
@@ -2996,9 +2996,9 @@
/* The peer is now running its own PBX. */
goto out;
}
- } else {
- chan->hangupcause = peer->hangupcause;
}
+ } else if (!ast_check_hangup(chan)) {
+ chan->hangupcause = peer->hangupcause;
}
ast_hangup(peer);
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/apps/app_macro.c
^
|
@@ -32,7 +32,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 338084 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/file.h"
#include "asterisk/channel.h"
@@ -164,7 +164,7 @@
static void macro_fixup(void *data, struct ast_channel *old_chan, struct ast_channel *new_chan);
-static struct ast_datastore_info macro_ds_info = {
+static const struct ast_datastore_info macro_ds_info = {
.type = "MACRO",
.chan_fixup = macro_fixup,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/apps/app_mixmonitor.c
^
|
@@ -39,7 +39,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 336716 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/paths.h" /* use ast_config_AST_MONITOR_DIR */
#include "asterisk/file.h"
@@ -232,7 +232,7 @@
ast_mutex_unlock(&mixmonitor_ds->lock);
}
-static struct ast_datastore_info mixmonitor_ds_info = {
+static const struct ast_datastore_info mixmonitor_ds_info = {
.type = "mixmonitor",
.destroy = mixmonitor_ds_destroy,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/apps/app_stack.c
^
|
@@ -32,7 +32,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369869 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/pbx.h"
#include "asterisk/module.h"
@@ -212,7 +212,7 @@
static void gosub_free(void *data);
-static struct ast_datastore_info stack_info = {
+static const struct ast_datastore_info stack_info = {
.type = "GOSUB",
.destroy = gosub_free,
};
|
[-]
[+]
|
Added |
asterisk-1.8.16.0.tar.xz/asterisk-1.8.16.0-summary.html
^
|
@@ -0,0 +1,147 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Release Summary - asterisk-1.8.16.0</title></head>
+<body>
+<h1 align="center"><a name="top">Release Summary</a></h1>
+<h3 align="center">asterisk-1.8.16.0</h3>
+<h3 align="center">Date: 2012-09-13</h3>
+<h3 align="center"><asteriskteam@digium.com></h3>
+<hr/>
+<h2 align="center">Table of Contents</h2>
+<ol>
+ <li><a href="#summary">Summary</a></li>
+ <li><a href="#contributors">Contributors</a></li>
+ <li><a href="#issues">Closed Issues</a></li>
+ <li><a href="#commits">Other Changes</a></li>
+ <li><a href="#diffstat">Diffstat</a></li>
+</ol>
+<hr/>
+<a name="summary"><h2 align="center">Summary</h2></a>
+<center><a href="#top">[Back to Top]</a></center><br/><p>This release includes only bug fixes. The changes included were made only to address problems that have been identified in this release series. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous release series are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.</p>
+<p>The data in this summary reflects changes that have been made since the previous release, asterisk-1.8.15.0.</p>
+<hr/>
+<a name="contributors"><h2 align="center">Contributors</h2></a>
+<center><a href="#top">[Back to Top]</a></center><br/><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were closed by commits that went into this release.</p>
+<table width="100%" border="0">
+<tr>
+<td width="33%"><h3>Coders</h3></td>
+<td width="33%"><h3>Testers</h3></td>
+<td width="33%"><h3>Reporters</h3></td>
+</tr>
+<tr valign="top">
+<td>
+5 kpfleming<br/>
+3 bebuild<br/>
+3 kmoore<br/>
+3 rmudgett<br/>
+2 mjordan<br/>
+1 Billy<br/>
+1 jrose<br/>
+1 tilghman<br/>
+1 tzafrir<br/>
+1 wdoekes<br/>
+</td>
+<td>
+1 Matt Jordan<br/>
+1 Michael L. Young<br/>
+</td>
+<td>
+1 bchia<br/>
+1 stephane.chazelas<br/>
+1 wdoekes<br/>
+</td>
+</tr>
+</table>
+<hr/>
+<a name="issues"><h2 align="center">Closed Issues</h2></a>
+<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p>
+<h3>Category: Channels/chan_sip/Interoperability</h3><br/>
+<a href="https://issues.asterisk.org/jira/browse/ASTERISK-20023">ASTERISK-20023</a>: double uri_escaping of contact in outbound invite<br/>
+Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=369993">369993</a><br/>
+Reporter: wdoekes<br/>
+Coders: kmoore<br/>
+<br/>
+<h3>Category: Core/RTP</h3><br/>
+<a href="https://issues.asterisk.org/jira/browse/ASTERISK-18404">ASTERISK-18404</a>: out-of-order RTP causes DTMF loss<br/>
+Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370252">370252</a><br/>
+Reporter: stephane.chazelas<br/>
+Testers: Matt Jordan<br/>
+Coders: mjordan<br/>
+<br/>
+<h3>Category: Functions/func_math</h3><br/>
+<a href="https://issues.asterisk.org/jira/browse/ASTERISK-20095">ASTERISK-20095</a>: Incorrect Documentation for DEC function<br/>
+Revision: <a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=369970">369970</a><br/>
+Reporter: bchia<br/>
+Testers: Michael L. Young<br/>
+Coders: Billy<br/>
+<br/>
+<hr/>
+<a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a>
+<center><a href="#top">[Back to Top]</a></center><br/><p>This is a list of all changes that went into this release that did not directly close an issue from the issue tracker. The commits may have been marked as being related to an issue. If that is the case, the issue numbers are listed here, as well.</p>
+<table width="100%" border="1">
+<tr><td><b>Revision</b></td><td><b>Author</b></td><td><b>Summary</b></td><td><b>Issues Referenced</b></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=369937">369937</a></td><td>tilghman</td><td>Allow the REALTIME() function to report errors back to the caller.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370014">370014</a></td><td>kmoore</td><td>Include Expires header for SIP PUBLISH requests</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370017">370017</a></td><td>rmudgett</td><td>Add missing ast_hangup() calls on some analog exception paths.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370081">370081</a></td><td>kmoore</td><td>Add comments about the BUILD_NATIVE change</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370131">370131</a></td><td>wdoekes</td><td>Code cleanup and bugfix in chan_sip outboundproxy parsing.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370183">370183</a></td><td>kpfleming</td><td>Ensure that all ast_datastore_info structures are 'const'.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370205">370205</a></td><td>kpfleming</td><td>Resolve severe memory leak in CEL logging modules.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370273">370273</a></td><td>mjordan</td><td>Fix compilation error when MALLOC_DEBUG is enabled</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370275">370275</a></td><td>rmudgett</td><td>Fix compiler warnings.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370360">370360</a></td><td>kpfleming</td><td>Free any datastores attached to dummy channels.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370383">370383</a></td><td>kpfleming</td><td>Improve documentation for the SHELL() dialplan function.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370428">370428</a></td><td>tzafrir</td><td>chan_oss: fix "sample rate" error message</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370429">370429</a></td><td>kpfleming</td><td>Rewrite a comment that didn't adequately explain the code it was documenting.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370494">370494</a></td><td>jrose</td><td>res_agi: Add message indicating need for \n character in verbose message</td>
+<td><a href="https://issues.asterisk.org/jira/browse/ASTERISK-20061">ASTERISK-20061</a></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=370563">370563</a></td><td>rmudgett</td><td>Release B channel allocation on error path in chan_misdn.</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=372842">372842</a></td><td>bebuild</td><td>Create 1.8.16.0-rc2</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=372845">372845</a></td><td>bebuild</td><td>Commit changes for 1.8.16.0-rc2</td>
+<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/1.8?view=revision&revision=372870">372870</a></td><td>bebuild</td><td>Importing release summary for 1.8.16.0-rc2 release.</td>
+<td></td></tr></table>
+<hr/>
+<a name="diffstat"><h2 align="center">Diffstat Results</h2></a>
+<center><a href="#top">[Back to Top]</a></center><br/><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p>
+<pre>
+.version | 2
+CHANGES | 12 ++
+ChangeLog | 75 ++++++++++++++
+README-SERIOUSLY.bestpractices.txt | 51 +++++++++
+UPGRADE.txt | 5
+addons/app_mysql.c | 2
+apps/app_dial.c | 4
+apps/app_macro.c | 2
+apps/app_mixmonitor.c | 2
+apps/app_stack.c | 2
+asterisk-1.8.16.0-rc1-summary.html | 124 -----------------------
+asterisk-1.8.16.0-rc1-summary.txt | 196 -------------------------------------
+asterisk-1.8.16.0-rc2-summary.html | 65 ++++++++++++
+asterisk-1.8.16.0-rc2-summary.txt | 94 +++++++++++++++++
+channels/chan_dahdi.c | 2
+channels/chan_iax2.c | 13 +-
+channels/chan_misdn.c | 2
+channels/chan_oss.c | 2
+channels/chan_sip.c | 129 +++++++++++-------------
+channels/sig_analog.c | 2
+channels/sip/sdp_crypto.c | 22 +++-
+funcs/func_curl.c | 2
+funcs/func_global.c | 2
+funcs/func_lock.c | 2
+funcs/func_math.c | 4
+funcs/func_odbc.c | 2
+funcs/func_realtime.c | 61 ++++++-----
+funcs/func_shell.c | 28 ++---
+main/ccss.c | 4
+main/cel.c | 45 ++++++++
+main/channel.c | 19 ++-
+main/features.c | 35 ++++++
+main/frame.c | 11 +-
+main/manager.c | 1
+main/pbx.c | 2
+res/res_agi.c | 2
+res/res_odbc.c | 2
+res/res_rtp_asterisk.c | 59 ++++++-----
+38 files changed, 592 insertions(+), 497 deletions(-)
+</pre><br/>
+<hr/>
+</body>
+</html>
|
[-]
[+]
|
Added |
asterisk-1.8.16.0.tar.xz/asterisk-1.8.16.0-summary.txt
^
|
@@ -0,0 +1,221 @@
+ Release Summary
+
+ asterisk-1.8.16.0
+
+ Date: 2012-09-13
+
+ <asteriskteam@digium.com>
+
+ ----------------------------------------------------------------------
+
+ Table of Contents
+
+ 1. Summary
+ 2. Contributors
+ 3. Closed Issues
+ 4. Other Changes
+ 5. Diffstat
+
+ ----------------------------------------------------------------------
+
+ Summary
+
+ [Back to Top]
+
+ This release includes only bug fixes. The changes included were made only
+ to address problems that have been identified in this release series.
+ Users should be able to safely upgrade to this version if this release
+ series is already in use. Users considering upgrading from a previous
+ release series are strongly encouraged to review the UPGRADE.txt document
+ as well as the CHANGES document for information about upgrading to this
+ release series.
+
+ The data in this summary reflects changes that have been made since the
+ previous release, asterisk-1.8.15.0.
+
+ ----------------------------------------------------------------------
+
+ Contributors
+
+ [Back to Top]
+
+ This table lists the people who have submitted code, those that have
+ tested patches, as well as those that reported issues on the issue tracker
+ that were resolved in this release. For coders, the number is how many of
+ their patches (of any size) were committed into this release. For testers,
+ the number is the number of times their name was listed as assisting with
+ testing a patch. Finally, for reporters, the number is the number of
+ issues that they reported that were closed by commits that went into this
+ release.
+
+ Coders Testers Reporters
+ 5 kpfleming 1 Matt Jordan 1 bchia
+ 3 bebuild 1 Michael L. Young 1 stephane.chazelas
+ 3 kmoore 1 wdoekes
+ 3 rmudgett
+ 2 mjordan
+ 1 Billy
+ 1 jrose
+ 1 tilghman
+ 1 tzafrir
+ 1 wdoekes
+
+ ----------------------------------------------------------------------
+
+ Closed Issues
+
+ [Back to Top]
+
+ This is a list of all issues from the issue tracker that were closed by
+ changes that went into this release.
+
+ Category: Channels/chan_sip/Interoperability
+
+ ASTERISK-20023: double uri_escaping of contact in outbound invite
+ Revision: 369993
+ Reporter: wdoekes
+ Coders: kmoore
+
+ Category: Core/RTP
+
+ ASTERISK-18404: out-of-order RTP causes DTMF loss
+ Revision: 370252
+ Reporter: stephane.chazelas
+ Testers: Matt Jordan
+ Coders: mjordan
+
+ Category: Functions/func_math
+
+ ASTERISK-20095: Incorrect Documentation for DEC function
+ Revision: 369970
+ Reporter: bchia
+ Testers: Michael L. Young
+ Coders: Billy
+
+ ----------------------------------------------------------------------
+
+ Commits Not Associated with an Issue
+
+ [Back to Top]
+
+ This is a list of all changes that went into this release that did not
+ directly close an issue from the issue tracker. The commits may have been
+ marked as being related to an issue. If that is the case, the issue
+ numbers are listed here, as well.
+
+ +------------------------------------------------------------------------+
+ | Revision | Author | Summary | Issues Referenced |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Allow the REALTIME() | |
+ | 369937 | tilghman | function to report errors | |
+ | | | back to the caller. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370014 | kmoore | Include Expires header for | |
+ | | | SIP PUBLISH requests | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Add missing ast_hangup() | |
+ | 370017 | rmudgett | calls on some analog | |
+ | | | exception paths. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370081 | kmoore | Add comments about the | |
+ | | | BUILD_NATIVE change | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Code cleanup and bugfix in | |
+ | 370131 | wdoekes | chan_sip outboundproxy | |
+ | | | parsing. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Ensure that all | |
+ | 370183 | kpfleming | ast_datastore_info | |
+ | | | structures are 'const'. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370205 | kpfleming | Resolve severe memory leak | |
+ | | | in CEL logging modules. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370273 | mjordan | Fix compilation error when | |
+ | | | MALLOC_DEBUG is enabled | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370275 | rmudgett | Fix compiler warnings. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370360 | kpfleming | Free any datastores | |
+ | | | attached to dummy channels. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Improve documentation for | |
+ | 370383 | kpfleming | the SHELL() dialplan | |
+ | | | function. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 370428 | tzafrir | chan_oss: fix "sample rate" | |
+ | | | error message | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Rewrite a comment that | |
+ | 370429 | kpfleming | didn't adequately explain | |
+ | | | the code it was | |
+ | | | documenting. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | res_agi: Add message | |
+ | 370494 | jrose | indicating need for \n | ASTERISK-20061 |
+ | | | character in verbose | |
+ | | | message | |
+ |----------+-----------+-----------------------------+-------------------|
+ | | | Release B channel | |
+ | 370563 | rmudgett | allocation on error path in | |
+ | | | chan_misdn. | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 372842 | bebuild | Create 1.8.16.0-rc2 | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 372845 | bebuild | Commit changes for | |
+ | | | 1.8.16.0-rc2 | |
+ |----------+-----------+-----------------------------+-------------------|
+ | 372870 | bebuild | Importing release summary | |
+ | | | for 1.8.16.0-rc2 release. | |
+ +------------------------------------------------------------------------+
+
+ ----------------------------------------------------------------------
+
+ Diffstat Results
+
+ [Back to Top]
+
+ This is a summary of the changes to the source code that went into this
+ release that was generated using the diffstat utility.
+
+ .version | 2
+ CHANGES | 12 ++
+ ChangeLog | 75 ++++++++++++++
+ README-SERIOUSLY.bestpractices.txt | 51 +++++++++
+ UPGRADE.txt | 5
+ addons/app_mysql.c | 2
+ apps/app_dial.c | 4
+ apps/app_macro.c | 2
+ apps/app_mixmonitor.c | 2
+ apps/app_stack.c | 2
+ asterisk-1.8.16.0-rc1-summary.html | 124 -----------------------
+ asterisk-1.8.16.0-rc1-summary.txt | 196 -------------------------------------
+ asterisk-1.8.16.0-rc2-summary.html | 65 ++++++++++++
+ asterisk-1.8.16.0-rc2-summary.txt | 94 +++++++++++++++++
+ channels/chan_dahdi.c | 2
+ channels/chan_iax2.c | 13 +-
+ channels/chan_misdn.c | 2
+ channels/chan_oss.c | 2
+ channels/chan_sip.c | 129 +++++++++++-------------
+ channels/sig_analog.c | 2
+ channels/sip/sdp_crypto.c | 22 +++-
+ funcs/func_curl.c | 2
+ funcs/func_global.c | 2
+ funcs/func_lock.c | 2
+ funcs/func_math.c | 4
+ funcs/func_odbc.c | 2
+ funcs/func_realtime.c | 61 ++++++-----
+ funcs/func_shell.c | 28 ++---
+ main/ccss.c | 4
+ main/cel.c | 45 ++++++++
+ main/channel.c | 19 ++-
+ main/features.c | 35 ++++++
+ main/frame.c | 11 +-
+ main/manager.c | 1
+ main/pbx.c | 2
+ res/res_agi.c | 2
+ res/res_odbc.c | 2
+ res/res_rtp_asterisk.c | 59 ++++++-----
+ 38 files changed, 592 insertions(+), 497 deletions(-)
+
+ ----------------------------------------------------------------------
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/chan_dahdi.c
^
|
@@ -49,7 +49,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 368759 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370017 $")
#if defined(__NetBSD__) || defined(__FreeBSD__)
#include <pthread.h>
@@ -11621,6 +11621,7 @@
ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", i->channel);
} else if (ast_pthread_create_detached(&threadid, NULL, analog_ss_thread, chan)) {
ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+ ast_hangup(chan);
}
}
break;
@@ -11888,6 +11889,7 @@
res = ast_pthread_create_detached(&threadid, NULL, analog_ss_thread, chan);
if (res) {
ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+ ast_hangup(chan);
} else {
i->dtmfcid_holdoff_state = 1;
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/chan_iax2.c
^
|
@@ -38,7 +38,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372058 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372845 $")
#include <sys/mman.h>
#include <dirent.h>
@@ -1328,7 +1328,7 @@
pvt->callno, pvt->peercallno, pvt->peer ? pvt->peer : "");
}
-static struct ast_datastore_info iax2_variable_datastore_info = {
+static const struct ast_datastore_info iax2_variable_datastore_info = {
.type = "IAX2_VARIABLE",
.duplicate = iax2_dup_variable_datastore,
.destroy = iax2_free_variable_datastore,
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/chan_misdn.c
^
|
@@ -58,7 +58,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369001 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370563 $")
#include <pthread.h>
#include <sys/socket.h>
@@ -7998,6 +7998,7 @@
/* create ast_channel and link all the objects together */
cl = chan_list_init(ORG_AST);
if (!cl) {
+ misdn_lib_release(newbc);
ast_log(LOG_ERROR, "Could not create call record for Dial(%s)\n", dial_str);
return NULL;
}
@@ -8006,6 +8007,7 @@
ast = misdn_new(cl, AST_STATE_RESERVED, args.ext, NULL, format, requestor ? requestor->linkedid : NULL, port, channel);
if (!ast) {
chan_list_unref(cl, "Failed to create a new channel");
+ misdn_lib_release(newbc);
ast_log(LOG_ERROR, "Could not create Asterisk channel for Dial(%s)\n", dial_str);
return NULL;
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/chan_oss.c
^
|
@@ -40,7 +40,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 335064 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370428 $")
#include <ctype.h> /* isalnum() used here */
#include <math.h>
@@ -532,7 +532,7 @@
res = ioctl(fd, SNDCTL_DSP_SPEED, &fmt);
if (res < 0) {
- ast_log(LOG_WARNING, "Failed to set audio device to mono\n");
+ ast_log(LOG_WARNING, "Failed to set sample rate to %d\n", desired);
return -1;
}
if (fmt != desired) {
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/chan_sip.c
^
|
@@ -209,7 +209,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369792 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370131 $")
#include <signal.h>
#include <sys/signal.h>
@@ -3111,6 +3111,52 @@
return TRUE;
}
+/*! \brief Parse proxy string and return an ao2_alloc'd proxy. If dest is
+ * non-NULL, no allocation is performed and dest is used instead.
+ * On error NULL is returned. */
+static struct sip_proxy *proxy_from_config(const char *proxy, int sipconf_lineno, struct sip_proxy *dest)
+{
+ char *mutable_proxy, *sep, *name;
+ int allocated = 0;
+
+ if (!dest) {
+ dest = ao2_alloc(sizeof(struct sip_proxy), NULL);
+ if (!dest) {
+ ast_log(LOG_WARNING, "Unable to allocate config storage for proxy\n");
+ return NULL;
+ }
+ allocated = 1;
+ }
+
+ /* Format is: [transport://]name[:port][,force] */
+ mutable_proxy = ast_skip_blanks(ast_strdupa(proxy));
+ sep = strchr(mutable_proxy, ',');
+ if (sep) {
+ *sep++ = '\0';
+ dest->force = !strncasecmp(ast_skip_blanks(sep), "force", 5);
+ } else {
+ dest->force = FALSE;
+ }
+
+ sip_parse_host(mutable_proxy, sipconf_lineno, &name, &dest->port, &dest->transport);
+
+ /* Check that there is a name at all */
+ if (ast_strlen_zero(name)) {
+ if (allocated) {
+ ao2_ref(dest, -1);
+ } else {
+ dest->name[0] = '\0';
+ }
+ return NULL;
+ }
+ ast_copy_string(dest->name, name, sizeof(dest->name));
+
+ /* Resolve host immediately */
+ proxy_update(dest);
+
+ return dest;
+}
+
/*! \brief converts ascii port to int representation. If no
* pt buffer is provided or the pt has errors when being converted
* to an int value, the port provided as the standard is used.
@@ -10318,7 +10364,7 @@
add_header(resp, "Session-Expires", se_hdr);
}
- if (msg[0] == '2' && (p->method == SIP_SUBSCRIBE || p->method == SIP_REGISTER)) {
+ if (msg[0] == '2' && (p->method == SIP_SUBSCRIBE || p->method == SIP_REGISTER || p->method == SIP_PUBLISH)) {
/* For registration responses, we also need expiry and
contact info */
char tmp[256];
@@ -12044,18 +12090,18 @@
else /* Save for any further attempts */
ast_string_field_set(p, fromname, n);
+ ast_copy_string(tmp_l, l, sizeof(tmp_l));
if (sip_cfg.pedanticsipchecking) {
ast_escape_quoted(n, tmp_n, sizeof(tmp_n));
n = tmp_n;
ast_uri_encode(l, tmp_l, sizeof(tmp_l), 0);
- l = tmp_l;
}
ourport = (p->fromdomainport) ? p->fromdomainport : ast_sockaddr_port(&p->ourip);
if (!sip_standard_port(p->socket.type, ourport)) {
- snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=%s", n, l, d, ourport, p->tag);
+ snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s:%d>;tag=%s", n, tmp_l, d, ourport, p->tag);
} else {
- snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s>;tag=%s", n, l, d, p->tag);
+ snprintf(from, sizeof(from), "\"%s\" <sip:%s@%s>;tag=%s", n, tmp_l, d, p->tag);
}
if (!ast_strlen_zero(explicit_uri)) {
@@ -27571,49 +27617,17 @@
} else if (!strcasecmp(v->name, "fromuser")) {
ast_string_field_set(peer, fromuser, v->value);
} else if (!strcasecmp(v->name, "outboundproxy")) {
- char *host, *proxyname, *sep;
-
+ struct sip_proxy *proxy;
if (ast_strlen_zero(v->value)) {
ast_log(LOG_WARNING, "no value given for outbound proxy on line %d of sip.conf\n", v->lineno);
continue;
}
-
- if (!peer->outboundproxy) {
- peer->outboundproxy = ao2_alloc(sizeof(*peer->outboundproxy), NULL);
- if (!peer->outboundproxy) {
- ast_log(LOG_WARNING, "Unable to allocate config storage for outboundproxy\n");
- continue;
- }
- }
-
- host = ast_strdupa(v->value);
- if (!host) {
- ast_log(LOG_WARNING, "Unable to allocate stack space for parsing outboundproxy\n");
- continue;
- }
-
- host = ast_skip_blanks(host);
- sep = strchr(host, ',');
- if (sep) {
- *sep++ = '\0';
- peer->outboundproxy->force = !strncasecmp(ast_skip_blanks(sep), "force", 5);
- } else {
- peer->outboundproxy->force = FALSE;
- }
-
- sip_parse_host(host, v->lineno, &proxyname,
- &peer->outboundproxy->port,
- &peer->outboundproxy->transport);
-
- if (ast_strlen_zero(proxyname)) {
- ast_log(LOG_WARNING, "you must specify a name for the outboundproxy on line %d of sip.conf\n", v->lineno);
- sip_cfg.outboundproxy.name[0] = '\0';
+ proxy = proxy_from_config(v->value, v->lineno, peer->outboundproxy);
+ if (!proxy) {
+ ast_log(LOG_WARNING, "failure parsing the outbound proxy on line %d of sip.conf.\n", v->lineno);
continue;
}
-
- ast_copy_string(peer->outboundproxy->name, proxyname, sizeof(peer->outboundproxy->name));
-
- proxy_update(peer->outboundproxy);
+ peer->outboundproxy = proxy;
} else if (!strcasecmp(v->name, "host")) {
if (!strcasecmp(v->value, "dynamic")) {
/* They'll register with us */
@@ -28557,41 +28571,16 @@
default_fromdomainport = STANDARD_SIP_PORT;
}
} else if (!strcasecmp(v->name, "outboundproxy")) {
- char *host, *proxyname, *sep;
-
+ struct sip_proxy *proxy;
if (ast_strlen_zero(v->value)) {
ast_log(LOG_WARNING, "no value given for outbound proxy on line %d of sip.conf\n", v->lineno);
continue;
}
-
- host = ast_strdupa(v->value);
- if (!host) {
- ast_log(LOG_WARNING, "Unable to allocate stack space for parsing outboundproxy\n");
+ proxy = proxy_from_config(v->value, v->lineno, &sip_cfg.outboundproxy);
+ if (!proxy) {
+ ast_log(LOG_WARNING, "failure parsing the outbound proxy on line %d of sip.conf.\n", v->lineno);
continue;
}
-
- host = ast_skip_blanks(host);
- sep = strchr(host, ',');
- if (sep) {
- *sep++ = '\0';
- sip_cfg.outboundproxy.force = !strncasecmp(ast_skip_blanks(sep), "force", 5);
- } else {
- sip_cfg.outboundproxy.force = FALSE;
- }
-
- sip_parse_host(host, v->lineno, &proxyname,
- &sip_cfg.outboundproxy.port,
- &sip_cfg.outboundproxy.transport);
-
- if (ast_strlen_zero(proxyname)) {
- ast_log(LOG_WARNING, "you must specify a name for the outboundproxy on line %d of sip.conf\n", v->lineno);
- sip_cfg.outboundproxy.name[0] = '\0';
- continue;
- }
-
- ast_copy_string(sip_cfg.outboundproxy.name, proxyname, sizeof(sip_cfg.outboundproxy.name));
-
- proxy_update(&sip_cfg.outboundproxy);
} else if (!strcasecmp(v->name, "autocreatepeer")) {
sip_cfg.autocreatepeer = ast_true(v->value);
} else if (!strcasecmp(v->name, "match_auth_username")) {
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/sig_analog.c
^
|
@@ -3831,6 +3831,7 @@
ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", i->channel);
} else if (ast_pthread_create_detached(&threadid, NULL, __analog_ss_thread, i)) {
ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+ ast_hangup(chan);
}
}
break;
@@ -3855,6 +3856,7 @@
ast_log(LOG_WARNING, "Cannot allocate new structure on channel %d\n", i->channel);
} else if (ast_pthread_create_detached(&threadid, NULL, __analog_ss_thread, i)) {
ast_log(LOG_WARNING, "Unable to start simple switch thread on channel %d\n", i->channel);
+ ast_hangup(chan);
}
}
break;
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/channels/sip/sdp_crypto.c
^
|
@@ -31,7 +31,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369001 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372845 $")
#include "asterisk/options.h"
#include "asterisk/utils.h"
@@ -49,6 +49,8 @@
char *a_crypto;
unsigned char local_key[SRTP_MASTER_LEN];
char local_key64[SRTP_MASTER_LEN64];
+ unsigned char remote_key[SRTP_MASTER_LEN];
+ char suite[64];
};
static int set_crypto_policy(struct ast_srtp_policy *policy, int suite_val, const unsigned char *master_key, unsigned long ssrc, int inbound);
@@ -257,12 +259,20 @@
return -1;
}
-
if ((key_len = ast_base64decode(remote_key, key_salt, sizeof(remote_key))) != SRTP_MASTER_LEN) {
- ast_log(LOG_WARNING, "SRTP sdescriptions key %d != %d\n", key_len, SRTP_MASTER_LEN);
+ ast_log(LOG_WARNING, "SRTP descriptions key %d != %d\n", key_len, SRTP_MASTER_LEN);
return -1;
}
+ if (!memcmp(p->remote_key, remote_key, sizeof(p->remote_key))) {
+ ast_debug(1, "SRTP remote key unchanged; maintaining current policy\n");
+ return 0;
+ }
+
+ /* Set the accepted policy and remote key */
+ ast_copy_string(p->suite, suite, sizeof(p->suite));
+ memcpy(p->remote_key, remote_key, sizeof(p->remote_key));
+
if (sdp_crypto_activate(p, suite_val, remote_key, rtp) < 0) {
return -1;
}
@@ -280,13 +290,17 @@
int sdp_crypto_offer(struct sdp_crypto *p)
{
char crypto_buf[128];
- const char *crypto_suite = "AES_CM_128_HMAC_SHA1_80"; /* Crypto offer */
+
+ if (ast_strlen_zero(p->suite)) {
+ /* Default crypto offer */
+ strcpy(p->suite, "AES_CM_128_HMAC_SHA1_80");
+ }
if (p->a_crypto) {
ast_free(p->a_crypto);
}
- if (snprintf(crypto_buf, sizeof(crypto_buf), "a=crypto:1 %s inline:%s\r\n", crypto_suite, p->local_key64) < 1) {
+ if (snprintf(crypto_buf, sizeof(crypto_buf), "a=crypto:1 %s inline:%s\r\n", p->suite, p->local_key64) < 1) {
return -1;
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_curl.c
^
|
@@ -37,7 +37,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 361753 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include <curl/curl.h>
@@ -165,7 +165,7 @@
static void curlds_free(void *data);
-static struct ast_datastore_info curl_info = {
+static const struct ast_datastore_info curl_info = {
.type = "CURL",
.destroy = curlds_free,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_global.c
^
|
@@ -31,7 +31,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 361657 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include <sys/stat.h>
@@ -88,7 +88,7 @@
static void shared_variable_free(void *data);
-static struct ast_datastore_info shared_variable_info = {
+static const struct ast_datastore_info shared_variable_info = {
.type = "SHARED_VARIABLES",
.destroy = shared_variable_free,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_lock.c
^
|
@@ -32,7 +32,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 366167 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include <signal.h>
@@ -99,7 +99,7 @@
static int unloading = 0;
static pthread_t broker_tid = AST_PTHREADT_NULL;
-static struct ast_datastore_info lock_info = {
+static const struct ast_datastore_info lock_info = {
.type = "MUTEX",
.destroy = lock_free,
.chan_fixup = lock_fixup,
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_math.c
^
|
@@ -34,7 +34,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 368039 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369970 $")
#include <math.h>
@@ -103,8 +103,8 @@
</syntax>
<description>
<para>Decrements the value of a variable, while returning the updated value to the dialplan</para>
- <para>Example: DEC(MyVAR) - Increments MyVar</para>
- <para>Note: DEC(${MyVAR}) - Is wrong, as INC expects the variable name, not its value</para>
+ <para>Example: DEC(MyVAR) - Decrements MyVar</para>
+ <para>Note: DEC(${MyVAR}) - Is wrong, as DEC expects the variable name, not its value</para>
</description>
</function>
***/
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_odbc.c
^
|
@@ -34,7 +34,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 366944 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/module.h"
#include "asterisk/file.h"
@@ -119,7 +119,7 @@
static void odbc_datastore_free(void *data);
-static struct ast_datastore_info odbc_info = {
+static const struct ast_datastore_info odbc_info = {
.type = "FUNC_ODBC",
.destroy = odbc_datastore_free,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_realtime.c
^
|
@@ -2,10 +2,10 @@
* Asterisk -- An open source telephony toolkit.
*
* Copyright (C) 2005-2006, BJ Weschke. All rights reserved.
- *
+ *
* BJ Weschke <bweschke@btwtech.com>
- *
- * This code is released by the author with no restrictions on usage.
+ *
+ * This code is released by the author with no restrictions on usage.
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
@@ -22,15 +22,15 @@
/*! \file
*
* \brief REALTIME dialplan function
- *
+ *
* \author BJ Weschke <bweschke@btwtech.com>
- *
+ *
* \ingroup functions
*/
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 340863 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369937 $")
#include "asterisk/file.h"
#include "asterisk/channel.h"
@@ -49,7 +49,7 @@
<syntax>
<parameter name="family" required="true" />
<parameter name="fieldmatch" required="true" />
- <parameter name="value" />
+ <parameter name="matchvalue" />
<parameter name="delim1|field">
<para>Use <replaceable>delim1</replaceable> with <replaceable>delim2</replaceable> on
read and <replaceable>field</replaceable> without <replaceable>delim2</replaceable> on
@@ -63,11 +63,11 @@
</syntax>
<description>
<para>This function will read or write values from/to a RealTime repository.
- REALTIME(....) will read names/values from the repository, and
+ REALTIME(....) will read names/values from the repository, and
REALTIME(....)= will write a new value/field to the repository. On a
read, this function returns a delimited text string. The name/value
pairs are delimited by <replaceable>delim1</replaceable>, and the name and value are delimited
- between each other with delim2.
+ between each other with delim2.
If there is no match, NULL will be returned by the function.
On a write, this function will always return NULL.</para>
</description>
@@ -108,7 +108,7 @@
<syntax>
<parameter name="family" required="true" />
<parameter name="fieldmatch" required="true" />
- <parameter name="value" />
+ <parameter name="matchvalue" />
<parameter name="delim1" />
<parameter name="delim2" />
</syntax>
@@ -130,13 +130,13 @@
<syntax>
<parameter name="family" required="true" />
<parameter name="fieldmatch" required="true" />
- <parameter name="value" required="true" />
+ <parameter name="matchvalue" required="true" />
<parameter name="fieldname" required="true" />
</syntax>
<description>
<para>This function retrieves a single item, <replaceable>fieldname</replaceable>
from the RT engine, where <replaceable>fieldmatch</replaceable> contains the value
- <replaceable>value</replaceable>. When written to, the REALTIME_FIELD() function
+ <replaceable>matchvalue</replaceable>. When written to, the REALTIME_FIELD() function
performs identically to the REALTIME() function.</para>
</description>
<see-also>
@@ -153,12 +153,12 @@
<syntax>
<parameter name="family" required="true" />
<parameter name="fieldmatch" required="true" />
- <parameter name="value" required="true" />
+ <parameter name="matchvalue" required="true" />
</syntax>
<description>
<para>This function retrieves a single record from the RT engine, where
<replaceable>fieldmatch</replaceable> contains the value
- <replaceable>value</replaceable> and formats the output suitably, such that
+ <replaceable>matchvalue</replaceable> and formats the output suitably, such that
it can be assigned to the HASH() function. The HASH() function then provides
a suitable method for retrieving each field value of the record.</para>
</description>
@@ -175,7 +175,7 @@
AST_THREADSTORAGE(buf2);
AST_THREADSTORAGE(buf3);
-static int function_realtime_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
+static int function_realtime_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
{
struct ast_variable *var, *head;
struct ast_str *out;
@@ -190,7 +190,7 @@
);
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "Syntax: REALTIME(family,fieldmatch[,value[,delim1[,delim2]]]) - missing argument!\n");
+ ast_log(LOG_WARNING, "Syntax: REALTIME(family,fieldmatch[,matchvalue[,delim1[,delim2]]]) - missing argument!\n");
return -1;
}
@@ -243,28 +243,35 @@
);
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,value,newcol) - missing argument!\n", cmd);
+ ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue,updatecol) - missing argument!\n", cmd);
return -1;
}
- if (chan)
- ast_autoservice_start(chan);
-
AST_STANDARD_APP_ARGS(args, data);
+ if (ast_strlen_zero(args.fieldmatch) || ast_strlen_zero(args.field)) {
+ ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue,updatecol) - missing argument!\n", cmd);
+ return -1;
+ }
+
+ if (chan) {
+ ast_autoservice_start(chan);
+ }
+
res = ast_update_realtime(args.family, args.fieldmatch, args.value, args.field, (char *)value, SENTINEL);
if (res < 0) {
ast_log(LOG_WARNING, "Failed to update. Check the debug log for possible data repository related entries.\n");
}
- if (chan)
+ if (chan) {
ast_autoservice_stop(chan);
+ }
- return 0;
+ return res;
}
-static int realtimefield_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
+static int realtimefield_read(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
{
struct ast_variable *var, *head;
struct ast_str *escapebuf = ast_str_thread_get(&buf1, 16);
@@ -286,14 +293,14 @@
}
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,value%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : "");
+ ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : "");
return -1;
}
AST_STANDARD_APP_ARGS(args, data);
if ((which == rtfield && args.argc != 4) || (which == rthash && args.argc != 3)) {
- ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,value%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : "");
+ ast_log(LOG_WARNING, "Syntax: %s(family,fieldmatch,matchvalue%s) - missing argument!\n", cmd, which == rtfield ? ",fieldname" : "");
return -1;
}
@@ -366,7 +373,7 @@
AST_STANDARD_APP_ARGS(a, data);
AST_STANDARD_APP_ARGS(v, valcopy);
- res = ast_store_realtime(a.family,
+ res = ast_store_realtime(a.family,
a.f[0], v.v[0], a.f[1], v.v[1], a.f[2], v.v[2], a.f[3], v.v[3], a.f[4], v.v[4],
a.f[5], v.v[5], a.f[6], v.v[6], a.f[7], v.v[7], a.f[8], v.v[8], a.f[9], v.v[9],
a.f[10], v.v[10], a.f[11], v.v[11], a.f[12], v.v[12], a.f[13], v.v[13], a.f[14], v.v[14],
@@ -388,7 +395,7 @@
return 0;
}
-static int function_realtime_readdestroy(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
+static int function_realtime_readdestroy(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
{
struct ast_variable *var, *head;
struct ast_str *out;
@@ -403,7 +410,7 @@
);
if (ast_strlen_zero(data)) {
- ast_log(LOG_WARNING, "Syntax: REALTIME_DESTROY(family,fieldmatch[,value[,delim1[,delim2]]]) - missing argument!\n");
+ ast_log(LOG_WARNING, "Syntax: REALTIME_DESTROY(family,fieldmatch[,matchvalue[,delim1[,delim2]]]) - missing argument!\n");
return -1;
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/funcs/func_shell.c
^
|
@@ -1,7 +1,7 @@
/*
* Asterisk -- An open source telephony toolkit.
*
- * Copyright (C) 2006, Digium, Inc.
+ * Copyright (C) 2006-2012, Digium, Inc.
*
* See http://www.asterisk.org for more information about
* the Asterisk project. Please do not directly contact
@@ -16,9 +16,9 @@
/*! \file
*
- * SHELL function to return the value of a system call.
- *
- * \note Inspiration and Guidance from Russell! Thank You!
+ * SHELL function to return the output generated by a command issued to the system shell.
+ *
+ * \note Inspiration and Guidance from Russell! Thank You!
*
* \author Brandon Kruse <bkruse@digium.com>
*
@@ -31,7 +31,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 331575 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370383 $")
#include "asterisk/module.h"
#include "asterisk/channel.h"
@@ -79,23 +79,22 @@
/*** DOCUMENTATION
<function name="SHELL" language="en_US">
<synopsis>
- Executes a command as if you were at a shell.
+ Executes a command using the system shell and captures its output.
</synopsis>
<syntax>
<parameter name="command" required="true">
- <para>This is the argument to the function, the command you want to pass to the shell.</para>
+ <para>The command that the shell should execute.</para>
</parameter>
</syntax>
<description>
- <para>Returns the value from a system command</para>
+ <para>Collects the output generated by a command executed by the system shell</para>
<para>Example: <literal>Set(foo=${SHELL(echo \bar\)})</literal></para>
- <note><para>When using the SHELL() dialplan function, your \SHELL\ is /bin/sh,
- which may differ as to the underlying shell, depending upon your production
- platform. Also keep in mind that if you are using a common path, you should
- be mindful of race conditions that could result from two calls running
- SHELL() simultaneously.</para></note>
+ <note><para>The command supplied to this function will be executed by the
+ system's shell, typically specified in the SHELL environment variable. There
+ are many different system shells available with somewhat different behaviors,
+ so the output generated by this function may vary between platforms.</para></note>
</description>
-
+
</function>
***/
static struct ast_custom_function shell_function = {
@@ -113,5 +112,4 @@
return ast_custom_function_register(&shell_function);
}
-AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Returns the output of a shell command");
-
+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Collects the output generated by a command executed by the system shell");
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/ccss.c
^
|
@@ -27,7 +27,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369238 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/astobj2.h"
#include "asterisk/strings.h"
@@ -1716,7 +1716,7 @@
* more information regarding the actual structure of the tree, see
* the documentation provided in include/asterisk/ccss.h
*/
-static const struct ast_datastore_info dialed_cc_interfaces_info = {
+static const const struct ast_datastore_info dialed_cc_interfaces_info = {
.type = "Dial CC Interfaces",
.duplicate = dialed_cc_interfaces_duplicate,
.destroy = dialed_cc_interfaces_destroy,
@@ -3130,7 +3130,7 @@
ast_free(recall_data);
}
-static struct ast_datastore_info recall_ds_info = {
+static const struct ast_datastore_info recall_ds_info = {
.type = "cc_recall",
.duplicate = cc_recall_ds_duplicate,
.destroy = cc_recall_ds_destroy,
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/cel.c
^
|
@@ -33,7 +33,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369001 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370275 $")
#include "asterisk/_private.h"
@@ -390,6 +390,14 @@
ao2_ref(lid, -1);
}
+/* Note that no 'chan_fixup' function is provided for this datastore type,
+ * because the channels that will use it will never be involved in masquerades.
+ */
+static const struct ast_datastore_info fabricated_channel_datastore = {
+ .type = "CEL fabricated channel",
+ .destroy = ast_free_ptr,
+};
+
struct ast_channel *ast_cel_fabricate_channel_from_event(const struct ast_event *event)
{
struct varshead *headp;
@@ -399,6 +407,8 @@
struct ast_cel_event_record record = {
.version = AST_CEL_EVENT_RECORD_VERSION,
};
+ struct ast_datastore *datastore;
+ char *app_data;
/* do not call ast_channel_alloc because this is not really a real channel */
if (!(tchan = ast_dummy_channel_alloc())) {
@@ -461,10 +471,41 @@
AST_LIST_INSERT_HEAD(headp, newvariable, entries);
}
- tchan->appl = ast_strdup(record.application_name);
- tchan->data = ast_strdup(record.application_data);
tchan->amaflags = record.amaflag;
+ /* We need to store an 'application name' and 'application
+ * data' on the channel for logging purposes, but the channel
+ * structure only provides a place to store pointers, and it
+ * expects these pointers to be pointing to data that does not
+ * need to be freed. This means that the channel's destructor
+ * does not attempt to free any storage that these pointers
+ * point to. However, we can't provide data in that form directly for
+ * these structure members. In order to ensure that these data
+ * elements have a lifetime that matches the channel's
+ * lifetime, we'll put them in a datastore attached to the
+ * channel, and set's the channel's pointers to point into the
+ * datastore. The datastore will then be automatically destroyed
+ * when the channel is destroyed.
+ */
+
+ if (!(datastore = ast_datastore_alloc(&fabricated_channel_datastore, NULL))) {
+ ast_channel_unref(tchan);
+ return NULL;
+ }
+
+ if (!(app_data = ast_malloc(strlen(record.application_name) + strlen(record.application_data) + 2))) {
+ ast_datastore_free(datastore);
+ ast_channel_unref(tchan);
+ return NULL;
+ }
+
+ tchan->appl = strcpy(app_data, record.application_name);
+ tchan->data = strcpy(app_data + strlen(record.application_name) + 1,
+ record.application_data);
+
+ datastore->data = app_data;
+ ast_channel_datastore_add(tchan, datastore);
+
return tchan;
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/channel.c
^
|
@@ -29,7 +29,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369001 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370360 $")
#include "asterisk/_private.h"
@@ -679,7 +679,7 @@
}
/*! \brief Datastore to put the linked list of ast_chan_trace and trace status */
-static const struct ast_datastore_info ast_chan_trace_datastore_info = {
+static const const struct ast_datastore_info ast_chan_trace_datastore_info = {
.type = "ChanTrace",
.destroy = ast_chan_trace_destroy_cb
};
@@ -2499,6 +2499,13 @@
struct ast_channel *chan = obj;
struct ast_var_t *vardata;
struct varshead *headp;
+ struct ast_datastore *datastore;
+
+ /* Get rid of each of the data stores on the channel */
+ while ((datastore = AST_LIST_REMOVE_HEAD(&chan->datastores, entry))) {
+ /* Free the data store */
+ ast_datastore_free(datastore);
+ }
headp = &chan->varshead;
@@ -2520,7 +2527,7 @@
ast_string_field_free_memory(chan);
}
-struct ast_datastore *ast_channel_datastore_alloc(const struct ast_datastore_info *info, const char *uid)
+struct ast_datastore *ast_channel_datastore_alloc(const const struct ast_datastore_info *info, const char *uid)
{
return ast_datastore_alloc(info, uid);
}
@@ -2561,7 +2568,7 @@
return AST_LIST_REMOVE(&chan->datastores, datastore, entry) ? 0 : -1;
}
-struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const struct ast_datastore_info *info, const char *uid)
+struct ast_datastore *ast_channel_datastore_find(struct ast_channel *chan, const const struct ast_datastore_info *info, const char *uid)
{
struct ast_datastore *datastore = NULL;
@@ -4707,7 +4714,7 @@
ast_free(plc);
}
-static struct ast_datastore_info plc_ds_info = {
+static const struct ast_datastore_info plc_ds_info = {
.type = "plc",
.destroy = plc_ds_destroy,
};
@@ -6053,7 +6060,7 @@
ast_free(ds);
}
-static const struct ast_datastore_info xfer_ds_info = {
+static const const struct ast_datastore_info xfer_ds_info = {
.type = "xfer_colp",
.destroy = xfer_ds_destroy,
};
@@ -9493,7 +9500,7 @@
ast_cc_config_params_destroy(cc_params);
}
-static const struct ast_datastore_info cc_channel_datastore_info = {
+static const const struct ast_datastore_info cc_channel_datastore_info = {
.type = "Call Completion",
.duplicate = channel_cc_params_copy,
.destroy = channel_cc_params_destroy,
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/features.c
^
|
@@ -29,7 +29,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369327 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372845 $")
#include "asterisk/_private.h"
@@ -945,6 +945,33 @@
struct ast_channel *transferee, const char *type, format_t format, void *data,
int timeout, int *outstate, const char *language);
+static const struct ast_datastore_info channel_app_data_datastore = {
+ .type = "Channel appdata datastore",
+ .destroy = ast_free_ptr,
+};
+
+static int set_chan_app_data(struct ast_channel *chan, const char *src_app_data)
+{
+ struct ast_datastore *datastore;
+ char *dst_app_data;
+
+ datastore = ast_datastore_alloc(&channel_app_data_datastore, NULL);
+ if (!datastore) {
+ return -1;
+ }
+
+ dst_app_data = ast_malloc(strlen(src_app_data) + 1);
+ if (!dst_app_data) {
+ ast_datastore_free(datastore);
+ return -1;
+ }
+
+ chan->data = strcpy(dst_app_data, src_app_data);
+ datastore->data = dst_app_data;
+ ast_channel_datastore_add(chan, datastore);
+ return 0;
+}
+
/*!
* \brief bridge the call
* \param data thread bridge.
@@ -958,9 +985,13 @@
struct ast_bridge_thread_obj *tobj = data;
tobj->chan->appl = !tobj->return_to_pbx ? "Transferred Call" : "ManagerBridge";
- tobj->chan->data = tobj->peer->name;
+ if (set_chan_app_data(tobj->chan, tobj->peer->name)) {
+ tobj->chan->data = "(Empty)";
+ }
tobj->peer->appl = !tobj->return_to_pbx ? "Transferred Call" : "ManagerBridge";
- tobj->peer->data = tobj->chan->name;
+ if (set_chan_app_data(tobj->peer, tobj->chan->name)) {
+ tobj->peer->data = "(Empty)";
+ }
ast_bridge_call(tobj->peer, tobj->chan, &tobj->bconfig);
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/frame.c
^
|
@@ -29,7 +29,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369001 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370429 $")
#include "asterisk/_private.h"
#include "asterisk/lock.h"
@@ -523,13 +523,18 @@
out->datalen = f->datalen;
out->samples = f->samples;
out->delivery = f->delivery;
- /* Set us as having malloc'd header only, so it will eventually
- get freed. */
+ /* Even though this new frame was allocated from the heap, we can't mark it
+ * with AST_MALLOCD_HDR, AST_MALLOCD_DATA and AST_MALLOCD_SRC, because that
+ * would cause ast_frfree() to attempt to individually free each of those
+ * under the assumption that they were separately allocated. Since this frame
+ * was allocated in a single allocation, we'll only mark it as if the header
+ * was heap-allocated; this will result in the entire frame being properly freed.
+ */
out->mallocd = AST_MALLOCD_HDR;
out->offset = AST_FRIENDLY_OFFSET;
if (out->datalen) {
out->data.ptr = buf + sizeof(*out) + AST_FRIENDLY_OFFSET;
- memcpy(out->data.ptr, f->data.ptr, out->datalen);
+ memcpy(out->data.ptr, f->data.ptr, out->datalen);
} else {
out->data.uint32 = f->data.uint32;
}
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/manager.c
^
|
@@ -47,7 +47,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372058 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 372845 $")
#include "asterisk/_private.h"
#include "asterisk/paths.h" /* use various ast_config_AST_* */
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/main/pbx.c
^
|
@@ -29,7 +29,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 369869 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/_private.h"
#include "asterisk/paths.h" /* use ast_config_AST_SYSTEM_NAME */
@@ -3277,7 +3277,7 @@
ast_free(exception);
}
-static struct ast_datastore_info exception_store_info = {
+static const struct ast_datastore_info exception_store_info = {
.type = "EXCEPTION",
.destroy = exception_store_free,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/res/res_agi.c
^
|
@@ -31,7 +31,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 365460 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370494 $")
#include <math.h>
#include <signal.h>
@@ -3539,7 +3539,7 @@
break;
len = sizeof(buf) - buflen;
if (agidebug)
- ast_verbose( "AGI Rx << temp buffer %s - errno %s\n", buf, strerror(errno));
+ ast_verbose("AGI Rx << temp buffer %s - errno %s\nNo \\n received, checking again.\n", buf, strerror(errno));
}
if (!buf[0]) {
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/res/res_odbc.c
^
|
@@ -38,7 +38,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 368738 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370183 $")
#include "asterisk/file.h"
#include "asterisk/channel.h"
@@ -153,7 +153,7 @@
AST_THREADSTORAGE(errors_buf);
-static struct ast_datastore_info txn_info = {
+static const struct ast_datastore_info txn_info = {
.type = "ODBC_Transaction",
.destroy = odbc_txn_free,
};
|
[-]
[+]
|
Changed |
asterisk-1.8.16.0.tar.xz/res/res_rtp_asterisk.c
^
|
@@ -34,7 +34,7 @@
#include "asterisk.h"
-ASTERISK_FILE_VERSION(__FILE__, "$Revision: 366880 $")
+ASTERISK_FILE_VERSION(__FILE__, "$Revision: 370252 $")
#include <sys/time.h>
#include <signal.h>
@@ -147,12 +147,13 @@
int rtpkeepalive; /*!< Send RTP comfort noice packets for keepalive */
/* DTMF Reception Variables */
- char resp;
- unsigned int lastevent;
- unsigned int dtmf_duration; /*!< Total duration in samples since the digit start event */
- unsigned int dtmf_timeout; /*!< When this timestamp is reached we consider END frame lost and forcibly abort digit */
+ char resp; /*!< The current digit being processed */
+ unsigned int last_seqno; /*!< The last known sequence number for any DTMF packet */
+ unsigned int last_end_timestamp; /*!< The last known timestamp received from an END packet */
+ unsigned int dtmf_duration; /*!< Total duration in samples since the digit start event */
+ unsigned int dtmf_timeout; /*!< When this timestamp is reached we consider END frame lost and forcibly abort digit */
unsigned int dtmfsamples;
- enum ast_rtp_dtmf_mode dtmfmode;/*!< The current DTMF mode of the RTP stream */
+ enum ast_rtp_dtmf_mode dtmfmode; /*!< The current DTMF mode of the RTP stream */
/* DTMF Transmission Variables */
unsigned int lastdigitts;
char sending_digit; /*!< boolean - are we sending digits */
@@ -1494,8 +1495,10 @@
rtp->dtmfsamples = 0;
return &ast_null_frame;
}
- ast_debug(1, "Sending dtmf: %d (%c), at %s\n", rtp->resp, rtp->resp,
- ast_sockaddr_stringify(&remote_address));
+ ast_debug(1, "Creating %s DTMF Frame: %d (%c), at %s\n",
+ type == AST_FRAME_DTMF_END ? "END" : "BEGIN",
+ rtp->resp, rtp->resp,
+ ast_sockaddr_stringify(&remote_address));
if (rtp->resp == 'X') {
rtp->f.frametype = AST_FRAME_CONTROL;
rtp->f.subclass.integer = AST_CONTROL_FLASH;
@@ -1559,12 +1562,12 @@
}
if (ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_DTMF_COMPENSATE)) {
- if ((rtp->lastevent != timestamp) || (rtp->resp && rtp->resp != resp)) {
+ if ((rtp->last_end_timestamp != timestamp) || (rtp->resp && rtp->resp != resp)) {
rtp->resp = resp;
rtp->dtmf_timeout = 0;
f = ast_frdup(create_dtmf_frame(instance, AST_FRAME_DTMF_END, ast_rtp_instance_get_prop(instance, AST_RTP_PROPERTY_DTMF_COMPENSATE)));
f->len = 0;
- rtp->lastevent = timestamp;
+ rtp->last_end_timestamp = timestamp;
AST_LIST_INSERT_TAIL(frames, f, frame_list);
}
} else {
@@ -1581,31 +1584,41 @@
}
new_duration = (new_duration & ~0xFFFF) | samples;
- /* The second portion of this check is to not mistakenly
- * stop accepting DTMF if the seqno rolls over beyond
- * 65535.
- */
- if (rtp->lastevent > seqno && rtp->lastevent - seqno < 50) {
- /* Out of order frame. Processing this can cause us to
- * improperly duplicate incoming DTMF, so just drop
- * this.
- */
- return;
- }
-
if (event_end & 0x80) {
/* End event */
- if ((rtp->lastevent != seqno) && rtp->resp) {
+ if ((rtp->last_seqno != seqno) && (timestamp > rtp->last_end_timestamp)) {
+ rtp->last_end_timestamp = timestamp;
rtp->dtmf_duration = new_duration;
+ rtp->resp = resp;
f = ast_frdup(create_dtmf_frame(instance, AST_FRAME_DTMF_END, 0));
f->len = ast_tvdiff_ms(ast_samp2tv(rtp->dtmf_duration, rtp_get_rate(f->subclass.codec)), ast_tv(0, 0));
rtp->resp = 0;
rtp->dtmf_duration = rtp->dtmf_timeout = 0;
AST_LIST_INSERT_TAIL(frames, f, frame_list);
+ } else if (rtpdebug) {
+ ast_debug(1, "Dropping duplicate or out of order DTMF END frame (seqno: %d, ts %d, digit %c)\n",
+ seqno, timestamp, resp);
}
} else {
/* Begin/continuation */
+ /* The second portion of the seqno check is to not mistakenly
+ * stop accepting DTMF if the seqno rolls over beyond
+ * 65535.
+ */
+ if ((rtp->last_seqno > seqno && rtp->last_seqno - seqno < 50)
+ || timestamp <= rtp->last_end_timestamp) {
+ /* Out of order frame. Processing this can cause us to
+ * improperly duplicate incoming DTMF, so just drop
+ * this.
+ */
+ if (rtpdebug) {
+ ast_debug(1, "Dropping out of order DTMF frame (seqno %d, ts %d, digit %c)\n",
+ seqno, timestamp, resp);
+ }
+ return;
+ }
+
if (rtp->resp && rtp->resp != resp) {
/* Another digit already began. End it */
f = ast_frdup(create_dtmf_frame(instance, AST_FRAME_DTMF_END, 0));
@@ -1629,7 +1642,7 @@
rtp->dtmf_timeout = timestamp + rtp->dtmf_duration + dtmftimeout;
}
- rtp->lastevent = seqno;
+ rtp->last_seqno = seqno;
}
rtp->dtmfsamples = samples;
|