Compare commits

...

10 Commits

Author SHA1 Message Date
Asterisk Autobuilder
8563f7f492 Importing release summary for 12.3.2 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.2@416147 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-13 06:11:10 +00:00
Asterisk Autobuilder
8bffd926d0 Update ChangeLog
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.2@416140 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-13 06:01:59 +00:00
Asterisk Autobuilder
14a64a75d8 Importing release summary for 12.3.2 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.2@416102 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-13 05:28:29 +00:00
Asterisk Autobuilder
12a4e125a5 Merge fix for regression caused by fix for AST-2014-007
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.2@416075 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-13 05:18:50 +00:00
Asterisk Autobuilder
517ca1d316 Update .version, remove summaries
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.2@416063 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-13 04:04:28 +00:00
Asterisk Autobuilder
c573a7a76c Create 12.3.2
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.2@416058 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-13 03:56:25 +00:00
Asterisk Autobuilder
c6dbcbd937 Importing release summary for 12.3.1 release.
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.1@415969 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-12 17:43:27 +00:00
Asterisk Autobuilder
a7eb1e2610 Merge changes for AST-2014-005, AST-2014-006, AST-2014-007, AST-2014-008
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.1@415906 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-12 16:55:17 +00:00
Asterisk Autobuilder
9482a3d508 Update .version, remove summaries
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.1@415793 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-12 12:49:04 +00:00
Asterisk Autobuilder
549e93523b Create 12.3.1
git-svn-id: https://origsvn.digium.com/svn/asterisk/tags/12.3.1@415788 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2014-06-12 12:29:16 +00:00
19 changed files with 956 additions and 1791 deletions

View File

@@ -1 +1 @@
12.3.0
12.3.2

104
ChangeLog
View File

@@ -1,3 +1,107 @@
2014-06-13 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 12.3.2 Released.
* AST-2014-007: Fix of fix to allow AMI and SIP TCP to send messages.
The original fix for AST-2014-007 inadvertently introduced a
regression in Asterisk's TCP and TLS handling that prevented
Asterisk from sending data over these transports. This patch fixes
that regression.
2014-06-12 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 12.3.1 Released.
* AST-2014-005 res_pjsip_pubsub: unauthenticated remote crash in PJSIP
pub/sub framework
A remotely exploitable crash vulnerability exists in the PJSIP channel
driver's pub/sub framework. If an attempt is made to unsubscribe when
not currently subscribed and the endpoint's "sub_min_expiry" is set
to zero, Asterisk tries to create an expiration timer with zero
seconds, which is not allowed, so an assertion raised.
The fix was to reject a subscription that is attempting to
unsubscribe when not being already subscribed. Asterisk now checks
for this situation appropriately and responds with a 400 instead of
crashing.
ASTERISK-23489 #close
* AST-2014-006: Add class authorization requirements to MixMonitor AMI
commands
MixMonitor AMI commands StartMixMonitor and StopMixMonitor lacked
class authorization. StopMixMonitor now requires that the manager
user either have the call or system class authorization.
StartMixMonitor is a slightly larger issue since it can execute shell
commands if the right arguments are passed into it, and we consider
this a permission escalation.
ASTERISK-23609 #close
Reported by: Corey Farrell
* AST-2014-007: Fix DOS by consuming the number of allowed HTTP
connections.
Simply establishing a TCP connection and never sending anything to
the configured HTTP port in http.conf will tie up a HTTP connection.
Since there is a maximum number of open HTTP sessions allowed at a
time you can block legitimate connections.
A similar problem exists if a HTTP request is started but never
finished.
* Added http.conf session_inactivity timer option to close HTTP
connections that aren't doing anything. Defaults to 30000 ms.
* Removed the undocumented manager.conf block-sockets option. It
interferes with TCP/TLS inactivity timeouts.
* AMI and SIP TLS connections now have better authentication timeout
protection. Though I didn't remove the bizzare TLS timeout polling
code from chan_sip.
* chan_sip can now handle SSL certificate renegotiations in the
middle of a session. It couldn't do that before because the socket
was non-blocking and the SSL calls were not restarted as documented
by the OpenSSL documentation.
* Fixed an off nominal leak of the ssl struct in
handle_tcptls_connection() if the FILE stream failed to open and
the SSL certificate negotiations failed.
The patch creates a custom FILE stream handler to give the created FILE
streams inactivity timeout and timeout after a specific moment in time
capability. This approach eliminates the need for code using the FILE
stream to be redesigned to deal with the timeouts.
This patch indirectly fixes most of ASTERISK-18345 by fixing the usage
of the SSL_read/SSL_write operations.
ASTERISK-23673 #close
Reported by: Richard Mudgett
* AST-2014-008: Fix potential deadlock situation in res_pjsip.
SIP transaction timeouts are handled in the PJSIP monitor thread.
When this happens on a subscription, and the subscription is
destroyed, the subscription destruction is dispatched synchronously
to the threadpool.
The issue is that the PJSIP dialog is locked by the monitor thread,
and then the dispatched task attempts to lock the dialog. This leads
to a deadlock that causes SIP traffic to no longer be accepted on the
Asterisk server.
The fix here is to treat the monitor thread as if it were a
threadpool thread when it attempts to dispatch synchronous tasks.
This way, the dispatched task turns into a simple function call within
the same thread, and the locking issue is averted.
ASTERISK-23802 #close
2014-05-29 Asterisk Development Team <asteriskteam@digium.com>
* Asterisk 12.3.0 Released.

View File

@@ -20,6 +20,20 @@
=== UPGRADE-11.txt -- Upgrade info for 10 to 11
===
===========================================================
From 12.3.0 to 12.3.1:
- MixMonitor AMI actions now require users to have authorization classes.
* MixMonitor - system
* MixMonitorMute - call or system
* StopMixMonitor - call or system
- Added http.conf session_inactivity timer option to close HTTP connections
that aren't doing anything.
- Removed the undocumented manager.conf block-sockets option. It interferes with
TCP/TLS inactivity timeouts.
From 12.2.0 to 12.3.0:
- The asterisk command line -I option and the asterisk.conf internal_timing

View File

@@ -1415,9 +1415,9 @@ static int load_module(void)
ast_cli_register_multiple(cli_mixmonitor, ARRAY_LEN(cli_mixmonitor));
res = ast_register_application_xml(app, mixmonitor_exec);
res |= ast_register_application_xml(stop_app, stop_mixmonitor_exec);
res |= ast_manager_register_xml("MixMonitorMute", 0, manager_mute_mixmonitor);
res |= ast_manager_register_xml("MixMonitor", 0, manager_mixmonitor);
res |= ast_manager_register_xml("StopMixMonitor", 0, manager_stop_mixmonitor);
res |= ast_manager_register_xml("MixMonitorMute", EVENT_FLAG_SYSTEM | EVENT_FLAG_CALL, manager_mute_mixmonitor);
res |= ast_manager_register_xml("MixMonitor", EVENT_FLAG_SYSTEM, manager_mixmonitor);
res |= ast_manager_register_xml("StopMixMonitor", EVENT_FLAG_SYSTEM | EVENT_FLAG_CALL, manager_stop_mixmonitor);
res |= set_mixmonitor_methods();
return res;

View File

@@ -1,720 +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-12.3.0</title></head>
<body>
<h1 align="center"><a name="top">Release Summary</a></h1>
<h3 align="center">asterisk-12.3.0</h3>
<h3 align="center">Date: 2014-05-29</h3>
<h3 align="center">&lt;asteriskteam@digium.com&gt;</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-12.2.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>
22 rmudgett<br/>
15 kmoore<br/>
12 jrose<br/>
10 mjordan<br/>
9 mmichelson<br/>
8 jcolp<br/>
6 file<br/>
5 wdoekes<br/>
4 bebuild<br/>
3 kharwell<br/>
2 gtjoseph<br/>
2 sgriepentrog<br/>
1 Bradley Watkins<br/>
1 coreyfarrell<br/>
1 David Woodhouse<br/>
1 elguero<br/>
1 igorg<br/>
1 may<br/>
1 newtonr<br/>
1 Nitesh Bansal<br/>
1 pabelanger<br/>
1 Sebastian Wiedenroth<br/>
1 Steve Davies<br/>
</td>
<td>
1 Denis<br/>
</td>
<td>
7 mjordan<br/>
4 mmichelson<br/>
3 jbigelow<br/>
2 gma<br/>
2 hexanol<br/>
2 kristoff<br/>
2 rnewton<br/>
2 themrrobert<br/>
1 amessina<br/>
1 bford<br/>
1 den159<br/>
1 dorianlogan<br/>
1 dwmw2<br/>
1 gtj<br/>
1 ibercom<br/>
1 igorg<br/>
1 italorossi<br/>
1 jan.svoboda<br/>
1 johnknott<br/>
1 laimbock<br/>
1 ldardini<br/>
1 marquis<br/>
1 mdavenport<br/>
1 nbansal<br/>
1 one47<br/>
1 pabelanger<br/>
1 rmudgett<br/>
1 wdoekes<br/>
1 wiedi<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: Addons/chan_ooh323</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23754">ASTERISK-23754</a>: [patch] Use var/lib directory for log file configured in asterisk.conf<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414154">414154</a><br/>
Reporter: igorg<br/>
Coders: may<br/>
<br/>
<h3>Category: Applications/app_chanspy</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23381">ASTERISK-23381</a>: [patch]ChanSpy- Barge only works on the initial 'spy', if the spied-on channel makes a new call, unable to barge.<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413556">413556</a><br/>
Reporter: themrrobert<br/>
Coders: jrose<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23381">ASTERISK-23381</a>: [patch]ChanSpy- Barge only works on the initial 'spy', if the spied-on channel makes a new call, unable to barge.<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413712">413712</a><br/>
Reporter: themrrobert<br/>
Coders: jrose<br/>
<br/>
<h3>Category: Applications/app_confbridge</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23282">ASTERISK-23282</a>: Documentation - Tab completion and CLI usage documentation do not indicate that 'all' is accepted for 'confbridge kick all'<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412728">412728</a><br/>
Reporter: dorianlogan<br/>
Coders: kmoore<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23545">ASTERISK-23545</a>: Confbridge talker detection settings configuration load bug<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411945">411945</a><br/>
Reporter: johnknott<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Applications/app_queue</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23547">ASTERISK-23547</a>: [patch] app_queue removing callers from queue when reloading<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411586">411586</a><br/>
Reporter: italorossi<br/>
Coders: jcolp<br/>
<br/>
<h3>Category: Applications/app_sms</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-18331">ASTERISK-18331</a>: app_sms failure<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412657">412657</a><br/>
Reporter: dwmw2<br/>
Coders: David Woodhouse<br/>
<br/>
<h3>Category: Applications/app_stack</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23620">ASTERISK-23620</a>: Code path in app_stack fails to unlock list<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412227">412227</a><br/>
Reporter: marquis<br/>
Coders: Bradley Watkins<br/>
<br/>
<h3>Category: Bridges/bridge_simple</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23497">ASTERISK-23497</a>: chan_sip SIP protocol attended transfer, with directmedia=yes results in a simple bridge, typically with no audio<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413650">413650</a><br/>
Reporter: hexanol<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23497">ASTERISK-23497</a>: chan_sip SIP protocol attended transfer, with directmedia=yes results in a simple bridge, typically with no audio<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413681">413681</a><br/>
Reporter: hexanol<br/>
Coders: jcolp<br/>
<br/>
<h3>Category: Channels/chan_dahdi</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23709">ASTERISK-23709</a>: Regression in Dahdi/Analog/waitfordialtone<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414069">414069</a><br/>
Reporter: one47<br/>
Coders: Steve Davies<br/>
<br/>
<h3>Category: Channels/chan_pjsip</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23584">ASTERISK-23584</a>: PJSIP 'Unable to create channel' when attempting to call from endpoint with UDP transport to one using WebSockets<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411927">411927</a><br/>
Reporter: rnewton<br/>
Coders: jcolp<br/>
<br/>
<h3>Category: Channels/chan_sip/General</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-19465">ASTERISK-19465</a>: P-Asserted-Identity Privacy<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412747">412747</a><br/>
Reporter: kristoff<br/>
Coders: jrose<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-19465">ASTERISK-19465</a>: P-Asserted-Identity Privacy<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412823">412823</a><br/>
Reporter: kristoff<br/>
Coders: jrose<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23564">ASTERISK-23564</a>: [patch]TLS/SRTP status of channel not currently available in a CLI command<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413877">413877</a><br/>
Reporter: laimbock<br/>
Coders: jrose<br/>
<br/>
<h3>Category: Channels/chan_sip/Transfers</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23497">ASTERISK-23497</a>: chan_sip SIP protocol attended transfer, with directmedia=yes results in a simple bridge, typically with no audio<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413650">413650</a><br/>
Reporter: hexanol<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23497">ASTERISK-23497</a>: chan_sip SIP protocol attended transfer, with directmedia=yes results in a simple bridge, typically with no audio<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413681">413681</a><br/>
Reporter: hexanol<br/>
Coders: jcolp<br/>
<br/>
<h3>Category: Contrib/General</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23639">ASTERISK-23639</a>: PJSIP Realtime: Alembic migration needed in order to widen some string columns<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412992">412992</a><br/>
Reporter: mmichelson<br/>
Coders: kharwell<br/>
<br/>
<h3>Category: Core/Bridging</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22904">ASTERISK-22904</a>: bridges: lock the bridge when creating bridge snapshots<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412193">412193</a><br/>
Reporter: mjordan<br/>
Coders: kmoore<br/>
<br/>
<h3>Category: Core/Channels</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22846">ASTERISK-22846</a>: testsuite: masquerade super test fails on all branches (still)<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411717">411717</a><br/>
Reporter: mjordan<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Core/Configuration</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23487">ASTERISK-23487</a>: features.conf cant load from realtime because features_config.c starts before loader.c<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412698">412698</a><br/>
Reporter: den159<br/>
Testers: Denis<br/>
Coders: mjordan<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23546">ASTERISK-23546</a>: CB_ADD_LEN does not do what you'd think<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411962">411962</a><br/>
Reporter: wdoekes<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Core/General</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23546">ASTERISK-23546</a>: CB_ADD_LEN does not do what you'd think<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411962">411962</a><br/>
Reporter: wdoekes<br/>
Coders: rmudgett<br/>
<br/>
<h3>Category: Core/Logging</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23616">ASTERISK-23616</a>: Big memory leak in logger.c<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412306">412306</a><br/>
Reporter: ibercom<br/>
Coders: coreyfarrell<br/>
<br/>
<h3>Category: Core/NewFeature</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23553">ASTERISK-23553</a>: Add ast_spinlock capability to lock.h<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412976">412976</a><br/>
Reporter: gtj<br/>
Coders: gtjoseph<br/>
<br/>
<h3>Category: Core/RTP</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23665">ASTERISK-23665</a>: Wrong mime type for codec H263-1998 (h263+)<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413789">413789</a><br/>
Reporter: gma<br/>
Coders: wdoekes<br/>
<br/>
<h3>Category: Core/Stasis</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23560">ASTERISK-23560</a>: [ARI] MOH doesn't indicate progress<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413121">413121</a><br/>
Reporter: jan.svoboda<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23573">ASTERISK-23573</a>: Crash when transferring unbridged call - in bridge_app_subscribed at stasis/app.c<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412882">412882</a><br/>
Reporter: mmichelson<br/>
Coders: jcolp<br/>
<br/>
<h3>Category: Resources/res_agi</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23390">ASTERISK-23390</a>: NewExten Event with application AGI shows up before and after AGI runs<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411868">411868</a><br/>
Reporter: bford<br/>
Coders: jrose<br/>
<br/>
<h3>Category: Resources/res_ari</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22677">ASTERISK-22677</a>: Playbacks on bridge via ARI are not queued<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412639">412639</a><br/>
Reporter: jbigelow<br/>
Coders: jrose<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22697">ASTERISK-22697</a>: ARI: Add the ability to raise an arbitrary User Event from the Asterisk or Applications resource<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414405">414405</a><br/>
Reporter: mjordan<br/>
Coders: sgriepentrog<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23433">ASTERISK-23433</a>: ARI: Add 'tones' as a URI scheme for /play operations on resources that support media (bridges, channels)<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412535">412535</a><br/>
Reporter: mjordan<br/>
Coders: jrose<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23560">ASTERISK-23560</a>: [ARI] MOH doesn't indicate progress<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413121">413121</a><br/>
Reporter: jan.svoboda<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23588">ASTERISK-23588</a>: ARI: Crash when unsubscribing from bridge<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412439">412439</a><br/>
Reporter: mjordan<br/>
Coders: kmoore<br/>
<br/>
<h3>Category: Resources/res_config_odbc</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23675">ASTERISK-23675</a>: [patch] Segmentation Fault on first SIP registration using res_config_odbc<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413282">413282</a><br/>
Reporter: ldardini<br/>
Coders: elguero<br/>
<br/>
<h3>Category: Resources/res_config_pgsql</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23707">ASTERISK-23707</a>: Realtime Contacts: Apparent mismatch between PGSQL database state and Asterisk state<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413226">413226</a><br/>
Reporter: mmichelson<br/>
Coders: mmichelson<br/>
<br/>
<h3>Category: Resources/res_corosync</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22372">ASTERISK-22372</a>: res_corosync: Compilation errors and functionality broken in Asterisk 12<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414330">414330</a><br/>
Reporter: mjordan<br/>
Coders: mjordan<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22912">ASTERISK-22912</a>: res_corosync doesn't build in Asterisk 12 beta2<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414330">414330</a><br/>
Reporter: mdavenport<br/>
Coders: mjordan<br/>
<br/>
<h3>Category: Resources/res_format_attr_h264</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23664">ASTERISK-23664</a>: Incorrect H264 specification in SDP.<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413792">413792</a><br/>
Reporter: gma<br/>
Coders: wdoekes<br/>
<br/>
<h3>Category: Resources/res_http_websocket</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23605">ASTERISK-23605</a>: res_http_websocket: Race condition in shutting down websocket causes crash<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413124">413124</a><br/>
Reporter: mjordan<br/>
Coders: kmoore<br/>
<br/>
<h3>Category: Resources/res_pjsip</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23498">ASTERISK-23498</a>: Asterisk PJSIP transport configuration fails on parsing of 'cipher' option, any valid option is reported as unsupported<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413159">413159</a><br/>
Reporter: amessina<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23514">ASTERISK-23514</a>: The pjsip.conf aor qualify contact parameters are not updated on reload.<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412551">412551</a><br/>
Reporter: rmudgett<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23584">ASTERISK-23584</a>: PJSIP 'Unable to create channel' when attempting to call from endpoint with UDP transport to one using WebSockets<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411927">411927</a><br/>
Reporter: rnewton<br/>
Coders: jcolp<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23639">ASTERISK-23639</a>: PJSIP Realtime: Alembic migration needed in order to widen some string columns<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412992">412992</a><br/>
Reporter: mmichelson<br/>
Coders: kharwell<br/>
<br/>
<h3>Category: Resources/res_pjsip_exten_state</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23672">ASTERISK-23672</a>: PJSIP Digium presence notifications are not sent if only the subtype or message changes<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413173">413173</a><br/>
Reporter: mmichelson<br/>
Coders: mmichelson<br/>
<br/>
<h3>Category: Resources/res_pjsip_refer</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23501">ASTERISK-23501</a>: Copy 'Referred-By' header to outgoing INVITE<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413210">413210</a><br/>
Reporter: jbigelow<br/>
Coders: rmudgett<br/>
<br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23502">ASTERISK-23502</a>: Channel variable SIPREFERTOHDR not being set during blind transfer<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412453">412453</a><br/>
Reporter: jbigelow<br/>
Coders: kharwell<br/>
<br/>
<h3>Category: Resources/res_rtp_asterisk</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23649">ASTERISK-23649</a>: [patch]Support for DTLS retransmission<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413009">413009</a><br/>
Reporter: nbansal<br/>
Coders: Nitesh Bansal<br/>
<br/>
<h3>Category: Sounds</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-23550">ASTERISK-23550</a>: Newer sound sets don't show up in menuselect<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412587">412587</a><br/>
Reporter: rnewton<br/>
Coders: newtonr<br/>
<br/>
<h3>Category: Tests/testsuite</h3><br/>
<a href="https://issues.asterisk.org/jira/browse/ASTERISK-22846">ASTERISK-22846</a>: testsuite: masquerade super test fails on all branches (still)<br/>
Revision: <a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411717">411717</a><br/>
Reporter: mjordan<br/>
Coders: rmudgett<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/12?view=revision&revision=411636">411636</a></td><td>rmudgett</td><td>stasis_channels.c: Eliminate another overuse of RAII_VAR().</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411638">411638</a></td><td>rmudgett</td><td>res_parking: Minor tweaks.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411668">411668</a></td><td>mjordan</td><td>res_hep: Fix crash when hep.conf not available</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411670">411670</a></td><td>kmoore</td><td>res_pjsip_pubsub: Add test event for state change</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411687">411687</a></td><td>mjordan</td><td>http: Fix spurious ERROR message in responses with no content</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411701">411701</a></td><td>rmudgett</td><td>Add some asserts that were handy when looking for a stasis cache problem.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411790">411790</a></td><td>kmoore</td><td>PJSIP: Fix crash introduced in r411671</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411804">411804</a></td><td>kmoore</td><td>Stasis: Fix Stasis() bridge refcount issue</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411809">411809</a></td><td>wdoekes</td><td>configs: Clean up long line and typo in res_odbc.conf.sample.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411811">411811</a></td><td>wdoekes</td><td>app_queue: Re-add HoldTime to QueueCallerAbandon event (simple typo during ast12 refactor).</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411883">411883</a></td><td>kmoore</td><td>PJSIP: Ensure test event has new state</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=411985">411985</a></td><td>rmudgett</td><td>Internal timing: Add notice that the -I and internal_timing option are no longer needed.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412034">412034</a></td><td>kmoore</td><td>res_stasis_answer: Add missing newlines</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412048">412048</a></td><td>mmichelson</td><td>Add a Command header to the AMI Mixmonitor action.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412074">412074</a></td><td>kharwell</td><td>res_pjsip_pubsub: Set the body generation result to 0 for a valid path</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412088">412088</a></td><td>mjordan</td><td>res_hep_pjsip: Use the channel name instead of the call ID when it is available</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412153">412153</a></td><td>mjordan</td><td>main/astobj2: Make REF_DEBUG a menuselect item; improve REF_DEBUG output</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412383">412383</a></td><td>rmudgett</td><td>chan_sip.c: Moved some sip_pvt unrefs after their last use.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412385">412385</a></td><td>rmudgett</td><td>chan_sip.c: Fix channel staging assertion failure.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412399">412399</a></td><td>rmudgett</td><td>Remove unused RAII_VAR() declarations.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412413">412413</a></td><td>rmudgett</td><td>Eliminate some more unnecessary RAII_VAR() uses.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412549">412549</a></td><td>jrose</td><td>Fix a silly shadowed variable mistake that was missed from play tones patch</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412565">412565</a></td><td>kmoore</td><td>ARI: Add debug logging for events and responses</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412579">412579</a></td><td>rmudgett</td><td>app_dial and app_queue: Make lock the forwarding channel while taking the channel snapshot.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412581">412581</a></td><td>rmudgett</td><td>Originated calls: Fix several originate call problems.</td>
<td><a href="https://issues.asterisk.org/jira/browse/ASTERISK-22212">ASTERISK-22212</a></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412582">412582</a></td><td>mmichelson</td><td>Allow for multiple contacts to be configured in a single contact= line.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412653">412653</a></td><td>jrose</td><td>ARI: Remove unnecessary \briefs from automatically generated documentation</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412713">412713</a></td><td>igorg</td><td></td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412730">412730</a></td><td>kmoore</td><td>Confbridge: Fix ConfbridgeKick AMI documentation</td>
<td><a href="https://issues.asterisk.org/jira/browse/ASTERISK-23282">ASTERISK-23282</a></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412749">412749</a></td><td>kmoore</td><td>HTTP: Add TCP_NODELAY to accepted connections</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=412924">412924</a></td><td>rmudgett</td><td>http: Fix spurious ERROR message in responses with no content.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413073">413073</a></td><td>kmoore</td><td>Bridging: Don't lock NULL bridges</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413088">413088</a></td><td>file</td><td>chan_pjsip: Implement core ability to get Call-ID of a channel.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413102">413102</a></td><td>gtjoseph</td><td>Add "destroy" implementation for spinlock.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413117">413117</a></td><td>file</td><td>chan_pjsip: Add support for picking up calls in the configured pickup group.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413119">413119</a></td><td>file</td><td>res_pjsip_sdp_rtp: Fix issue where sending a hold SDP twice could cause an unhold.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413140">413140</a></td><td>file</td><td>chan_pjsip: Fix deadlock when retrieving call-id of channel.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413142">413142</a></td><td>rmudgett</td><td>chan_sip.c: Fixed off-nominal message iterator ref count and alloc fail issues.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413196">413196</a></td><td>jrose</td><td>Parking: Add 'AnnounceChannel' argument to manager action 'Park'</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413258">413258</a></td><td>mmichelson</td><td>Prevent crashes in res_config_odbc due to uninitialized string fields.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413306">413306</a></td><td>mmichelson</td><td>Ensure that all parts of SQL UPDATEs and DELETEs are encoded.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413358">413358</a></td><td>mmichelson</td><td>Check for an act on failures to update contacts during registration.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413372">413372</a></td><td>mmichelson</td><td>Improve XML sanitization in NOTIFYs, especially for presence subtypes and messages.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413398">413398</a></td><td>mmichelson</td><td>Fix encoding of custom prepare extra data.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413452">413452</a></td><td>rmudgett</td><td>app_confbridge: Fix ref leak in CLI "confbridge kick" command.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413454">413454</a></td><td>rmudgett</td><td>app_confbridge: Fixed "CBAnn" channels not going away.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413487">413487</a></td><td>file</td><td>app_queue: Extend documentation for various Manager actions and events.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413588">413588</a></td><td>kmoore</td><td>Allow Asterisk to compile under GCC 4.10</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413597">413597</a></td><td>kmoore</td><td>Fix 32bit build for func_env</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413667">413667</a></td><td>file</td><td>Undoing framehook support. Issues were uncovered by Bamboo.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413766">413766</a></td><td>rmudgett</td><td>Fix compiler warning from GCC 4.10 fixup.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413896">413896</a></td><td>wdoekes</td><td>res_musiconhold: Minor cleanup.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=413993">413993</a></td><td>rmudgett</td><td>app_meetme: Fix overwrite of DAHDI conference data structure.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414051">414051</a></td><td>rmudgett</td><td>sig_pri.c: Pull the pri_dchannel() PRI_EVENT_RING case into its own function.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414122">414122</a></td><td>mjordan</td><td>bridge_native_rtp/bridge_channel: Fix direct media issues due to frame hook</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414137">414137</a></td><td>mjordan</td><td>Undo r414122</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414216">414216</a></td><td>sgriepentrog</td><td>pbx.c: prevent potential crash from recursive replace()</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414272">414272</a></td><td>rmudgett</td><td>core_unreal: Only block media frames when a generator is on both ends of an unreal channel.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414347">414347</a></td><td>mjordan</td><td>UPGRADE: Add note for REF_DEBUG flag</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414400">414400</a></td><td>jrose</td><td>res_pjsip_refer: Fix bugs involving Parking/PJSIP/transfers</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414782">414782</a></td><td>bebuild</td><td>Create 12.3.0-rc2</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414783">414783</a></td><td>bebuild</td><td>Remove old summaries; Update .version</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414784">414784</a></td><td>bebuild</td><td>Merge r414528, r414749, r414763, r414765 for 12.3.0-rc2</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/branches/12?view=revision&revision=414785">414785</a></td><td>bebuild</td><td>Importing release summary for 12.3.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 | 57
ChangeLog | 50
UPGRADE.txt | 27
addons/chan_ooh323.c | 5
apps/app_adsiprog.c | 2
apps/app_chanspy.c | 71
apps/app_confbridge.c | 36
apps/app_dial.c | 13
apps/app_dumpchan.c | 6
apps/app_festival.c | 2
apps/app_getcpeid.c | 8
apps/app_meetme.c | 44
apps/app_minivm.c | 4
apps/app_mixmonitor.c | 8
apps/app_originate.c | 4
apps/app_queue.c | 111 -
apps/app_sms.c | 46
apps/app_stack.c | 3
apps/app_userevent.c | 2
apps/app_verbose.c | 2
apps/app_voicemail.c | 10
apps/confbridge/conf_config_parser.c | 14
asterisk-12.3.0-rc1-summary.html | 512 ----
asterisk-12.3.0-rc1-summary.txt | 763 -------
asterisk-12.3.0-rc2-summary.html | 79
asterisk-12.3.0-rc2-summary.txt | 111 +
bridges/bridge_native_rtp.c | 9
bridges/bridge_softmix.c | 8
build_tools/cflags.xml | 3
cdr/cdr_adaptive_odbc.c | 4
cel/cel_odbc.c | 8
cel/cel_pgsql.c | 4
channels/chan_alsa.c | 6
channels/chan_dahdi.c | 56
channels/chan_gtalk.c | 8
channels/chan_iax2.c | 68
channels/chan_jingle.c | 12
channels/chan_mgcp.c | 28
channels/chan_motif.c | 14
channels/chan_oss.c | 3
channels/chan_phone.c | 4
channels/chan_pjsip.c | 74
channels/chan_sip.c | 357 +--
channels/chan_skinny.c | 136 -
channels/chan_unistim.c | 73
channels/iax2/firmware.c | 2
channels/iax2/parser.c | 4
channels/pjsip/dialplan_functions.c | 6
channels/sig_analog.c | 32
channels/sig_pri.c | 1042 ++++------
channels/sip/config_parser.c | 2
channels/sip/include/sip.h | 9
channels/sip/security_events.c | 2
configs/asterisk.conf.sample | 1
configs/res_odbc.conf.sample | 8
configs/sip.conf.sample | 12
configure.ac | 18
contrib/ast-db-manage/cdr/env.py | 5
contrib/ast-db-manage/config/versions/e96a0b8071c_increase_pjsip_column_size.py | 39
contrib/realtime/mysql/mysql_cdr.sql | 32
contrib/realtime/oracle/oracle_cdr.sql | 46
contrib/realtime/postgresql/postgresql_cdr.sql | 36
contrib/realtime/sqlserver/mssql_cdr.sql | 42
contrib/scripts/refcounter.py | 171 +
formats/format_pcm.c | 8
funcs/func_channel.c | 2
funcs/func_env.c | 6
funcs/func_frame_trace.c | 4
funcs/func_hangupcause.c | 2
funcs/func_iconv.c | 2
funcs/func_srv.c | 6
funcs/func_strings.c | 2
funcs/func_sysinfo.c | 10
include/asterisk/app.h | 8
include/asterisk/astobj.h | 2
include/asterisk/astobj2.h | 129 -
include/asterisk/autoconfig.h.in | 16
include/asterisk/bridge.h | 18
include/asterisk/channel.h | 14
include/asterisk/devicestate.h | 2
include/asterisk/event.h | 127 -
include/asterisk/event_defs.h | 238 +-
include/asterisk/framehook.h | 216 +-
include/asterisk/manager.h | 2
include/asterisk/message.h | 10
include/asterisk/netsock2.h | 11
include/asterisk/options.h | 6
include/asterisk/parking.h | 12
include/asterisk/pbx.h | 62
include/asterisk/res_pjsip_session.h | 22
include/asterisk/rtp_engine.h | 2
include/asterisk/spinlock.h | 488 ++++
include/asterisk/stasis.h | 102
include/asterisk/stasis_app.h | 71
include/asterisk/stasis_bridges.h | 18
include/asterisk/stasis_channels.h | 8
main/Makefile | 4
main/abstract_jb.c | 2
main/acl.c | 2
main/adsi.c | 2
main/aoc.c | 6
main/app.c | 179 +
main/asterisk.c | 32
main/astobj2.c | 60
main/audiohook.c | 6
main/autoservice.c | 8
main/bridge.c | 62
main/bridge_basic.c | 56
main/bridge_channel.c | 2
main/bucket.c | 2
main/callerid.c | 8
main/ccss.c | 22
main/cdr.c | 16
main/channel.c | 179 -
main/cli.c | 8
main/config.c | 10
main/config_options.c | 6
main/core_unreal.c | 11
main/data.c | 13
main/devicestate.c | 35
main/dial.c | 24
main/dsp.c | 2
main/enum.c | 4
main/event.c | 125 +
main/features_config.c | 3
main/file.c | 2
main/format.c | 8
main/frame.c | 8
main/framehook.c | 13
main/http.c | 22
main/io.c | 4
main/loader.c | 6
main/logger.c | 12
main/manager.c | 7
main/manager_bridges.c | 2
main/manager_channels.c | 57
main/message.c | 40
main/netsock.c | 6
main/netsock2.c | 18
main/parking.c | 10
main/pbx.c | 241 +-
main/rtp_engine.c | 62
main/sched.c | 6
main/security_events.c | 10
main/slinfactory.c | 2
main/stasis.c | 279 ++
main/stasis_bridges.c | 36
main/stasis_cache.c | 9
main/stasis_channels.c | 56
main/stasis_endpoints.c | 6
main/stasis_message.c | 5
main/stdtime/localtime.c | 2
main/stun.c | 10
main/taskprocessor.c | 2
main/translate.c | 6
main/udptl.c | 12
main/utils.c | 11
main/xmldoc.c | 2
pbx/dundi-parser.c | 8
pbx/pbx_config.c | 2
pbx/pbx_dundi.c | 10
res/ael/pval.c | 2
res/ari/ari_model_validators.c | 25
res/ari/ari_model_validators.h | 4
res/ari/ari_websockets.c | 1
res/ari/resource_applications.h | 26
res/ari/resource_asterisk.h | 18
res/ari/resource_bridges.c | 261 ++
res/ari/resource_bridges.h | 128 -
res/ari/resource_channels.c | 12
res/ari/resource_channels.h | 224 +-
res/ari/resource_device_states.h | 16
res/ari/resource_endpoints.h | 12
res/ari/resource_events.c | 56
res/ari/resource_events.h | 42
res/ari/resource_mailboxes.h | 18
res/ari/resource_playbacks.h | 14
res/ari/resource_recordings.c | 1
res/ari/resource_recordings.h | 38
res/ari/resource_sounds.h | 10
res/parking/parking_applications.c | 3
res/parking/parking_bridge.c | 17
res/parking/parking_bridge_features.c | 92
res/parking/parking_manager.c | 119 +
res/parking/res_parking.h | 13
res/res_agi.c | 4
res/res_ari.c | 3
res/res_ari_bridges.c | 143 +
res/res_ari_events.c | 192 +
res/res_ari_model.c | 2
res/res_calendar.c | 8
res/res_calendar_caldav.c | 7
res/res_calendar_ews.c | 2
res/res_calendar_icalendar.c | 2
res/res_config_odbc.c | 65
res/res_config_pgsql.c | 11
res/res_corosync.c | 382 +++
res/res_crypto.c | 2
res/res_fax.c | 59
res/res_fax_spandsp.c | 24
res/res_format_attr_celt.c | 6
res/res_format_attr_h263.c | 8
res/res_format_attr_h264.c | 8
res/res_format_attr_opus.c | 14
res/res_format_attr_silk.c | 10
res/res_hep.c | 2
res/res_hep_pjsip.c | 37
res/res_http_websocket.c | 39
res/res_jabber.c | 22
res/res_monitor.c | 4
res/res_musiconhold.c | 83
res/res_odbc.c | 2
res/res_parking.c | 8
res/res_pjsip.c | 26
res/res_pjsip/config_transport.c | 40
res/res_pjsip/location.c | 76
res/res_pjsip/pjsip_configuration.c | 21
res/res_pjsip/pjsip_options.c | 59
res/res_pjsip/presence_xml.c | 8
res/res_pjsip/security_events.c | 1
res/res_pjsip_exten_state.c | 5
res/res_pjsip_messaging.c | 12
res/res_pjsip_outbound_registration.c | 8
res/res_pjsip_pidf_digium_body_supplement.c | 9
res/res_pjsip_pubsub.c | 21
res/res_pjsip_refer.c | 106 -
res/res_pjsip_registrar.c | 11
res/res_pjsip_sdp_rtp.c | 29
res/res_pjsip_session.c | 108 -
res/res_pjsip_t38.c | 23
res/res_pktccops.c | 19
res/res_rtp_asterisk.c | 106 -
res/res_sorcery_config.c | 2
res/res_srtp.c | 10
res/res_stasis.c | 235 ++
res/res_stasis_answer.c | 7
res/res_stasis_playback.c | 12
res/res_stasis_recording.c | 7
res/res_stasis_snoop.c | 2
res/res_stun_monitor.c | 2
res/res_timing_dahdi.c | 4
res/res_xmpp.c | 4
res/stasis/app.c | 8
res/stasis/control.c | 22
res/stasis/control.h | 11
res/stasis_recording/stored.c | 1
rest-api-templates/ari_resource.h.mustache | 10
rest-api/api-docs/applications.json | 2
rest-api/api-docs/asterisk.json | 2
rest-api/api-docs/bridges.json | 97
rest-api/api-docs/channels.json | 4
rest-api/api-docs/deviceStates.json | 2
rest-api/api-docs/endpoints.json | 2
rest-api/api-docs/events.json | 76
rest-api/api-docs/mailboxes.json | 2
rest-api/api-docs/playbacks.json | 2
rest-api/api-docs/recordings.json | 2
rest-api/api-docs/sounds.json | 2
rest-api/resources.json | 2
sounds/Makefile | 6
sounds/sounds.xml | 117 -
tests/test_cel.c | 6
263 files changed, 7428 insertions(+), 4105 deletions(-)
</pre><br/>
<hr/>
</body>
</html>

View File

@@ -1,931 +0,0 @@
Release Summary
asterisk-12.3.0
Date: 2014-05-29
<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-12.2.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
22 rmudgett 1 Denis 7 mjordan
15 kmoore 4 mmichelson
12 jrose 3 jbigelow
10 mjordan 2 gma
9 mmichelson 2 hexanol
8 jcolp 2 kristoff
6 file 2 rnewton
5 wdoekes 2 themrrobert
4 bebuild 1 amessina
3 kharwell 1 bford
2 gtjoseph 1 den159
2 sgriepentrog 1 dorianlogan
1 Bradley Watkins 1 dwmw2
1 coreyfarrell 1 gtj
1 David Woodhouse 1 ibercom
1 elguero 1 igorg
1 igorg 1 italorossi
1 may 1 jan.svoboda
1 newtonr 1 johnknott
1 Nitesh Bansal 1 laimbock
1 pabelanger 1 ldardini
1 Sebastian Wiedenroth 1 marquis
1 Steve Davies 1 mdavenport
1 nbansal
1 one47
1 pabelanger
1 rmudgett
1 wdoekes
1 wiedi
----------------------------------------------------------------------
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: Addons/chan_ooh323
ASTERISK-23754: [patch] Use var/lib directory for log file configured in
asterisk.conf
Revision: 414154
Reporter: igorg
Coders: may
Category: Applications/app_chanspy
ASTERISK-23381: [patch]ChanSpy- Barge only works on the initial 'spy', if
the spied-on channel makes a new call, unable to barge.
Revision: 413556
Reporter: themrrobert
Coders: jrose
ASTERISK-23381: [patch]ChanSpy- Barge only works on the initial 'spy', if
the spied-on channel makes a new call, unable to barge.
Revision: 413712
Reporter: themrrobert
Coders: jrose
Category: Applications/app_confbridge
ASTERISK-23282: Documentation - Tab completion and CLI usage documentation
do not indicate that 'all' is accepted for 'confbridge kick all'
Revision: 412728
Reporter: dorianlogan
Coders: kmoore
ASTERISK-23545: Confbridge talker detection settings configuration load
bug
Revision: 411945
Reporter: johnknott
Coders: rmudgett
Category: Applications/app_queue
ASTERISK-23547: [patch] app_queue removing callers from queue when
reloading
Revision: 411586
Reporter: italorossi
Coders: jcolp
Category: Applications/app_sms
ASTERISK-18331: app_sms failure
Revision: 412657
Reporter: dwmw2
Coders: David Woodhouse
Category: Applications/app_stack
ASTERISK-23620: Code path in app_stack fails to unlock list
Revision: 412227
Reporter: marquis
Coders: Bradley Watkins
Category: Bridges/bridge_simple
ASTERISK-23497: chan_sip SIP protocol attended transfer, with
directmedia=yes results in a simple bridge, typically with no audio
Revision: 413650
Reporter: hexanol
Coders: jcolp
ASTERISK-23497: chan_sip SIP protocol attended transfer, with
directmedia=yes results in a simple bridge, typically with no audio
Revision: 413681
Reporter: hexanol
Coders: jcolp
Category: Channels/chan_dahdi
ASTERISK-23709: Regression in Dahdi/Analog/waitfordialtone
Revision: 414069
Reporter: one47
Coders: Steve Davies
Category: Channels/chan_pjsip
ASTERISK-23584: PJSIP 'Unable to create channel' when attempting to call
from endpoint with UDP transport to one using WebSockets
Revision: 411927
Reporter: rnewton
Coders: jcolp
Category: Channels/chan_sip/General
ASTERISK-19465: P-Asserted-Identity Privacy
Revision: 412747
Reporter: kristoff
Coders: jrose
ASTERISK-19465: P-Asserted-Identity Privacy
Revision: 412823
Reporter: kristoff
Coders: jrose
ASTERISK-23564: [patch]TLS/SRTP status of channel not currently available
in a CLI command
Revision: 413877
Reporter: laimbock
Coders: jrose
Category: Channels/chan_sip/Transfers
ASTERISK-23497: chan_sip SIP protocol attended transfer, with
directmedia=yes results in a simple bridge, typically with no audio
Revision: 413650
Reporter: hexanol
Coders: jcolp
ASTERISK-23497: chan_sip SIP protocol attended transfer, with
directmedia=yes results in a simple bridge, typically with no audio
Revision: 413681
Reporter: hexanol
Coders: jcolp
Category: Contrib/General
ASTERISK-23639: PJSIP Realtime: Alembic migration needed in order to widen
some string columns
Revision: 412992
Reporter: mmichelson
Coders: kharwell
Category: Core/Bridging
ASTERISK-22904: bridges: lock the bridge when creating bridge snapshots
Revision: 412193
Reporter: mjordan
Coders: kmoore
Category: Core/Channels
ASTERISK-22846: testsuite: masquerade super test fails on all branches
(still)
Revision: 411717
Reporter: mjordan
Coders: rmudgett
Category: Core/Configuration
ASTERISK-23487: features.conf cant load from realtime because
features_config.c starts before loader.c
Revision: 412698
Reporter: den159
Testers: Denis
Coders: mjordan
ASTERISK-23546: CB_ADD_LEN does not do what you'd think
Revision: 411962
Reporter: wdoekes
Coders: rmudgett
Category: Core/General
ASTERISK-23546: CB_ADD_LEN does not do what you'd think
Revision: 411962
Reporter: wdoekes
Coders: rmudgett
Category: Core/Logging
ASTERISK-23616: Big memory leak in logger.c
Revision: 412306
Reporter: ibercom
Coders: coreyfarrell
Category: Core/NewFeature
ASTERISK-23553: Add ast_spinlock capability to lock.h
Revision: 412976
Reporter: gtj
Coders: gtjoseph
Category: Core/RTP
ASTERISK-23665: Wrong mime type for codec H263-1998 (h263+)
Revision: 413789
Reporter: gma
Coders: wdoekes
Category: Core/Stasis
ASTERISK-23560: [ARI] MOH doesn't indicate progress
Revision: 413121
Reporter: jan.svoboda
Coders: jcolp
ASTERISK-23573: Crash when transferring unbridged call - in
bridge_app_subscribed at stasis/app.c
Revision: 412882
Reporter: mmichelson
Coders: jcolp
Category: Resources/res_agi
ASTERISK-23390: NewExten Event with application AGI shows up before and
after AGI runs
Revision: 411868
Reporter: bford
Coders: jrose
Category: Resources/res_ari
ASTERISK-22677: Playbacks on bridge via ARI are not queued
Revision: 412639
Reporter: jbigelow
Coders: jrose
ASTERISK-22697: ARI: Add the ability to raise an arbitrary User Event from
the Asterisk or Applications resource
Revision: 414405
Reporter: mjordan
Coders: sgriepentrog
ASTERISK-23433: ARI: Add 'tones' as a URI scheme for /play operations on
resources that support media (bridges, channels)
Revision: 412535
Reporter: mjordan
Coders: jrose
ASTERISK-23560: [ARI] MOH doesn't indicate progress
Revision: 413121
Reporter: jan.svoboda
Coders: jcolp
ASTERISK-23588: ARI: Crash when unsubscribing from bridge
Revision: 412439
Reporter: mjordan
Coders: kmoore
Category: Resources/res_config_odbc
ASTERISK-23675: [patch] Segmentation Fault on first SIP registration using
res_config_odbc
Revision: 413282
Reporter: ldardini
Coders: elguero
Category: Resources/res_config_pgsql
ASTERISK-23707: Realtime Contacts: Apparent mismatch between PGSQL
database state and Asterisk state
Revision: 413226
Reporter: mmichelson
Coders: mmichelson
Category: Resources/res_corosync
ASTERISK-22372: res_corosync: Compilation errors and functionality broken
in Asterisk 12
Revision: 414330
Reporter: mjordan
Coders: mjordan
ASTERISK-22912: res_corosync doesn't build in Asterisk 12 beta2
Revision: 414330
Reporter: mdavenport
Coders: mjordan
Category: Resources/res_format_attr_h264
ASTERISK-23664: Incorrect H264 specification in SDP.
Revision: 413792
Reporter: gma
Coders: wdoekes
Category: Resources/res_http_websocket
ASTERISK-23605: res_http_websocket: Race condition in shutting down
websocket causes crash
Revision: 413124
Reporter: mjordan
Coders: kmoore
Category: Resources/res_pjsip
ASTERISK-23498: Asterisk PJSIP transport configuration fails on parsing of
'cipher' option, any valid option is reported as unsupported
Revision: 413159
Reporter: amessina
Coders: jcolp
ASTERISK-23514: The pjsip.conf aor qualify contact parameters are not
updated on reload.
Revision: 412551
Reporter: rmudgett
Coders: jcolp
ASTERISK-23584: PJSIP 'Unable to create channel' when attempting to call
from endpoint with UDP transport to one using WebSockets
Revision: 411927
Reporter: rnewton
Coders: jcolp
ASTERISK-23639: PJSIP Realtime: Alembic migration needed in order to widen
some string columns
Revision: 412992
Reporter: mmichelson
Coders: kharwell
Category: Resources/res_pjsip_exten_state
ASTERISK-23672: PJSIP Digium presence notifications are not sent if only
the subtype or message changes
Revision: 413173
Reporter: mmichelson
Coders: mmichelson
Category: Resources/res_pjsip_refer
ASTERISK-23501: Copy 'Referred-By' header to outgoing INVITE
Revision: 413210
Reporter: jbigelow
Coders: rmudgett
ASTERISK-23502: Channel variable SIPREFERTOHDR not being set during blind
transfer
Revision: 412453
Reporter: jbigelow
Coders: kharwell
Category: Resources/res_rtp_asterisk
ASTERISK-23649: [patch]Support for DTLS retransmission
Revision: 413009
Reporter: nbansal
Coders: Nitesh Bansal
Category: Sounds
ASTERISK-23550: Newer sound sets don't show up in menuselect
Revision: 412587
Reporter: rnewton
Coders: newtonr
Category: Tests/testsuite
ASTERISK-22846: testsuite: masquerade super test fails on all branches
(still)
Revision: 411717
Reporter: mjordan
Coders: rmudgett
----------------------------------------------------------------------
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 |
|--------+------------+-----------------------------------+--------------|
|411636 |rmudgett |stasis_channels.c: Eliminate | |
| | |another overuse of RAII_VAR(). | |
|--------+------------+-----------------------------------+--------------|
|411638 |rmudgett |res_parking: Minor tweaks. | |
|--------+------------+-----------------------------------+--------------|
|411668 |mjordan |res_hep: Fix crash when hep.conf | |
| | |not available | |
|--------+------------+-----------------------------------+--------------|
|411670 |kmoore |res_pjsip_pubsub: Add test event | |
| | |for state change | |
|--------+------------+-----------------------------------+--------------|
|411687 |mjordan |http: Fix spurious ERROR message in| |
| | |responses with no content | |
|--------+------------+-----------------------------------+--------------|
| | |Add some asserts that were handy | |
|411701 |rmudgett |when looking for a stasis cache | |
| | |problem. | |
|--------+------------+-----------------------------------+--------------|
|411790 |kmoore |PJSIP: Fix crash introduced in | |
| | |r411671 | |
|--------+------------+-----------------------------------+--------------|
|411804 |kmoore |Stasis: Fix Stasis() bridge | |
| | |refcount issue | |
|--------+------------+-----------------------------------+--------------|
|411809 |wdoekes |configs: Clean up long line and | |
| | |typo in res_odbc.conf.sample. | |
|--------+------------+-----------------------------------+--------------|
| | |app_queue: Re-add HoldTime to | |
|411811 |wdoekes |QueueCallerAbandon event (simple | |
| | |typo during ast12 refactor). | |
|--------+------------+-----------------------------------+--------------|
|411883 |kmoore |PJSIP: Ensure test event has new | |
| | |state | |
|--------+------------+-----------------------------------+--------------|
| | |Internal timing: Add notice that | |
|411985 |rmudgett |the -I and internal_timing option | |
| | |are no longer needed. | |
|--------+------------+-----------------------------------+--------------|
|412034 |kmoore |res_stasis_answer: Add missing | |
| | |newlines | |
|--------+------------+-----------------------------------+--------------|
|412048 |mmichelson |Add a Command header to the AMI | |
| | |Mixmonitor action. | |
|--------+------------+-----------------------------------+--------------|
| | |res_pjsip_pubsub: Set the body | |
|412074 |kharwell |generation result to 0 for a valid | |
| | |path | |
|--------+------------+-----------------------------------+--------------|
| | |res_hep_pjsip: Use the channel name| |
|412088 |mjordan |instead of the call ID when it is | |
| | |available | |
|--------+------------+-----------------------------------+--------------|
| | |main/astobj2: Make REF_DEBUG a | |
|412153 |mjordan |menuselect item; improve REF_DEBUG | |
| | |output | |
|--------+------------+-----------------------------------+--------------|
|412383 |rmudgett |chan_sip.c: Moved some sip_pvt | |
| | |unrefs after their last use. | |
|--------+------------+-----------------------------------+--------------|
|412385 |rmudgett |chan_sip.c: Fix channel staging | |
| | |assertion failure. | |
|--------+------------+-----------------------------------+--------------|
|412399 |rmudgett |Remove unused RAII_VAR() | |
| | |declarations. | |
|--------+------------+-----------------------------------+--------------|
|412413 |rmudgett |Eliminate some more unnecessary | |
| | |RAII_VAR() uses. | |
|--------+------------+-----------------------------------+--------------|
| | |Fix a silly shadowed variable | |
|412549 |jrose |mistake that was missed from play | |
| | |tones patch | |
|--------+------------+-----------------------------------+--------------|
|412565 |kmoore |ARI: Add debug logging for events | |
| | |and responses | |
|--------+------------+-----------------------------------+--------------|
| | |app_dial and app_queue: Make lock | |
|412579 |rmudgett |the forwarding channel while taking| |
| | |the channel snapshot. | |
|--------+------------+-----------------------------------+--------------|
|412581 |rmudgett |Originated calls: Fix several |ASTERISK-22212|
| | |originate call problems. | |
|--------+------------+-----------------------------------+--------------|
| | |Allow for multiple contacts to be | |
|412582 |mmichelson |configured in a single contact= | |
| | |line. | |
|--------+------------+-----------------------------------+--------------|
| | |ARI: Remove unnecessary \briefs | |
|412653 |jrose |from automatically generated | |
| | |documentation | |
|--------+------------+-----------------------------------+--------------|
|412713 |igorg | | |
|--------+------------+-----------------------------------+--------------|
|412730 |kmoore |Confbridge: Fix ConfbridgeKick AMI |ASTERISK-23282|
| | |documentation | |
|--------+------------+-----------------------------------+--------------|
|412749 |kmoore |HTTP: Add TCP_NODELAY to accepted | |
| | |connections | |
|--------+------------+-----------------------------------+--------------|
|412924 |rmudgett |http: Fix spurious ERROR message in| |
| | |responses with no content. | |
|--------+------------+-----------------------------------+--------------|
|413073 |kmoore |Bridging: Don't lock NULL bridges | |
|--------+------------+-----------------------------------+--------------|
|413088 |file |chan_pjsip: Implement core ability | |
| | |to get Call-ID of a channel. | |
|--------+------------+-----------------------------------+--------------|
|413102 |gtjoseph |Add "destroy" implementation for | |
| | |spinlock. | |
|--------+------------+-----------------------------------+--------------|
| | |chan_pjsip: Add support for picking| |
|413117 |file |up calls in the configured pickup | |
| | |group. | |
|--------+------------+-----------------------------------+--------------|
| | |res_pjsip_sdp_rtp: Fix issue where | |
|413119 |file |sending a hold SDP twice could | |
| | |cause an unhold. | |
|--------+------------+-----------------------------------+--------------|
|413140 |file |chan_pjsip: Fix deadlock when | |
| | |retrieving call-id of channel. | |
|--------+------------+-----------------------------------+--------------|
| | |chan_sip.c: Fixed off-nominal | |
|413142 |rmudgett |message iterator ref count and | |
| | |alloc fail issues. | |
|--------+------------+-----------------------------------+--------------|
|413196 |jrose |Parking: Add 'AnnounceChannel' | |
| | |argument to manager action 'Park' | |
|--------+------------+-----------------------------------+--------------|
|413258 |mmichelson |Prevent crashes in res_config_odbc | |
| | |due to uninitialized string fields.| |
|--------+------------+-----------------------------------+--------------|
|413306 |mmichelson |Ensure that all parts of SQL | |
| | |UPDATEs and DELETEs are encoded. | |
|--------+------------+-----------------------------------+--------------|
| | |Check for an act on failures to | |
|413358 |mmichelson |update contacts during | |
| | |registration. | |
|--------+------------+-----------------------------------+--------------|
| | |Improve XML sanitization in | |
|413372 |mmichelson |NOTIFYs, especially for presence | |
| | |subtypes and messages. | |
|--------+------------+-----------------------------------+--------------|
|413398 |mmichelson |Fix encoding of custom prepare | |
| | |extra data. | |
|--------+------------+-----------------------------------+--------------|
|413452 |rmudgett |app_confbridge: Fix ref leak in CLI| |
| | |"confbridge kick" command. | |
|--------+------------+-----------------------------------+--------------|
|413454 |rmudgett |app_confbridge: Fixed "CBAnn" | |
| | |channels not going away. | |
|--------+------------+-----------------------------------+--------------|
|413487 |file |app_queue: Extend documentation for| |
| | |various Manager actions and events.| |
|--------+------------+-----------------------------------+--------------|
|413588 |kmoore |Allow Asterisk to compile under GCC| |
| | |4.10 | |
|--------+------------+-----------------------------------+--------------|
|413597 |kmoore |Fix 32bit build for func_env | |
|--------+------------+-----------------------------------+--------------|
|413667 |file |Undoing framehook support. Issues | |
| | |were uncovered by Bamboo. | |
|--------+------------+-----------------------------------+--------------|
|413766 |rmudgett |Fix compiler warning from GCC 4.10 | |
| | |fixup. | |
|--------+------------+-----------------------------------+--------------|
|413896 |wdoekes |res_musiconhold: Minor cleanup. | |
|--------+------------+-----------------------------------+--------------|
|413993 |rmudgett |app_meetme: Fix overwrite of DAHDI | |
| | |conference data structure. | |
|--------+------------+-----------------------------------+--------------|
| | |sig_pri.c: Pull the pri_dchannel() | |
|414051 |rmudgett |PRI_EVENT_RING case into its own | |
| | |function. | |
|--------+------------+-----------------------------------+--------------|
| | |bridge_native_rtp/bridge_channel: | |
|414122 |mjordan |Fix direct media issues due to | |
| | |frame hook | |
|--------+------------+-----------------------------------+--------------|
|414137 |mjordan |Undo r414122 | |
|--------+------------+-----------------------------------+--------------|
|414216 |sgriepentrog|pbx.c: prevent potential crash from| |
| | |recursive replace() | |
|--------+------------+-----------------------------------+--------------|
| | |core_unreal: Only block media | |
|414272 |rmudgett |frames when a generator is on both | |
| | |ends of an unreal channel. | |
|--------+------------+-----------------------------------+--------------|
|414347 |mjordan |UPGRADE: Add note for REF_DEBUG | |
| | |flag | |
|--------+------------+-----------------------------------+--------------|
|414400 |jrose |res_pjsip_refer: Fix bugs involving| |
| | |Parking/PJSIP/transfers | |
|--------+------------+-----------------------------------+--------------|
|414782 |bebuild |Create 12.3.0-rc2 | |
|--------+------------+-----------------------------------+--------------|
|414783 |bebuild |Remove old summaries; Update | |
| | |.version | |
|--------+------------+-----------------------------------+--------------|
|414784 |bebuild |Merge r414528, r414749, r414763, | |
| | |r414765 for 12.3.0-rc2 | |
|--------+------------+-----------------------------------+--------------|
|414785 |bebuild |Importing release summary for | |
| | |12.3.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 | 57
ChangeLog | 50
UPGRADE.txt | 27
addons/chan_ooh323.c | 5
apps/app_adsiprog.c | 2
apps/app_chanspy.c | 71
apps/app_confbridge.c | 36
apps/app_dial.c | 13
apps/app_dumpchan.c | 6
apps/app_festival.c | 2
apps/app_getcpeid.c | 8
apps/app_meetme.c | 44
apps/app_minivm.c | 4
apps/app_mixmonitor.c | 8
apps/app_originate.c | 4
apps/app_queue.c | 111 -
apps/app_sms.c | 46
apps/app_stack.c | 3
apps/app_userevent.c | 2
apps/app_verbose.c | 2
apps/app_voicemail.c | 10
apps/confbridge/conf_config_parser.c | 14
asterisk-12.3.0-rc1-summary.html | 512 ----
asterisk-12.3.0-rc1-summary.txt | 763 -------
asterisk-12.3.0-rc2-summary.html | 79
asterisk-12.3.0-rc2-summary.txt | 111 +
bridges/bridge_native_rtp.c | 9
bridges/bridge_softmix.c | 8
build_tools/cflags.xml | 3
cdr/cdr_adaptive_odbc.c | 4
cel/cel_odbc.c | 8
cel/cel_pgsql.c | 4
channels/chan_alsa.c | 6
channels/chan_dahdi.c | 56
channels/chan_gtalk.c | 8
channels/chan_iax2.c | 68
channels/chan_jingle.c | 12
channels/chan_mgcp.c | 28
channels/chan_motif.c | 14
channels/chan_oss.c | 3
channels/chan_phone.c | 4
channels/chan_pjsip.c | 74
channels/chan_sip.c | 357 +--
channels/chan_skinny.c | 136 -
channels/chan_unistim.c | 73
channels/iax2/firmware.c | 2
channels/iax2/parser.c | 4
channels/pjsip/dialplan_functions.c | 6
channels/sig_analog.c | 32
channels/sig_pri.c | 1042 ++++------
channels/sip/config_parser.c | 2
channels/sip/include/sip.h | 9
channels/sip/security_events.c | 2
configs/asterisk.conf.sample | 1
configs/res_odbc.conf.sample | 8
configs/sip.conf.sample | 12
configure.ac | 18
contrib/ast-db-manage/cdr/env.py | 5
contrib/ast-db-manage/config/versions/e96a0b8071c_increase_pjsip_column_size.py | 39
contrib/realtime/mysql/mysql_cdr.sql | 32
contrib/realtime/oracle/oracle_cdr.sql | 46
contrib/realtime/postgresql/postgresql_cdr.sql | 36
contrib/realtime/sqlserver/mssql_cdr.sql | 42
contrib/scripts/refcounter.py | 171 +
formats/format_pcm.c | 8
funcs/func_channel.c | 2
funcs/func_env.c | 6
funcs/func_frame_trace.c | 4
funcs/func_hangupcause.c | 2
funcs/func_iconv.c | 2
funcs/func_srv.c | 6
funcs/func_strings.c | 2
funcs/func_sysinfo.c | 10
include/asterisk/app.h | 8
include/asterisk/astobj.h | 2
include/asterisk/astobj2.h | 129 -
include/asterisk/autoconfig.h.in | 16
include/asterisk/bridge.h | 18
include/asterisk/channel.h | 14
include/asterisk/devicestate.h | 2
include/asterisk/event.h | 127 -
include/asterisk/event_defs.h | 238 +-
include/asterisk/framehook.h | 216 +-
include/asterisk/manager.h | 2
include/asterisk/message.h | 10
include/asterisk/netsock2.h | 11
include/asterisk/options.h | 6
include/asterisk/parking.h | 12
include/asterisk/pbx.h | 62
include/asterisk/res_pjsip_session.h | 22
include/asterisk/rtp_engine.h | 2
include/asterisk/spinlock.h | 488 ++++
include/asterisk/stasis.h | 102
include/asterisk/stasis_app.h | 71
include/asterisk/stasis_bridges.h | 18
include/asterisk/stasis_channels.h | 8
main/Makefile | 4
main/abstract_jb.c | 2
main/acl.c | 2
main/adsi.c | 2
main/aoc.c | 6
main/app.c | 179 +
main/asterisk.c | 32
main/astobj2.c | 60
main/audiohook.c | 6
main/autoservice.c | 8
main/bridge.c | 62
main/bridge_basic.c | 56
main/bridge_channel.c | 2
main/bucket.c | 2
main/callerid.c | 8
main/ccss.c | 22
main/cdr.c | 16
main/channel.c | 179 -
main/cli.c | 8
main/config.c | 10
main/config_options.c | 6
main/core_unreal.c | 11
main/data.c | 13
main/devicestate.c | 35
main/dial.c | 24
main/dsp.c | 2
main/enum.c | 4
main/event.c | 125 +
main/features_config.c | 3
main/file.c | 2
main/format.c | 8
main/frame.c | 8
main/framehook.c | 13
main/http.c | 22
main/io.c | 4
main/loader.c | 6
main/logger.c | 12
main/manager.c | 7
main/manager_bridges.c | 2
main/manager_channels.c | 57
main/message.c | 40
main/netsock.c | 6
main/netsock2.c | 18
main/parking.c | 10
main/pbx.c | 241 +-
main/rtp_engine.c | 62
main/sched.c | 6
main/security_events.c | 10
main/slinfactory.c | 2
main/stasis.c | 279 ++
main/stasis_bridges.c | 36
main/stasis_cache.c | 9
main/stasis_channels.c | 56
main/stasis_endpoints.c | 6
main/stasis_message.c | 5
main/stdtime/localtime.c | 2
main/stun.c | 10
main/taskprocessor.c | 2
main/translate.c | 6
main/udptl.c | 12
main/utils.c | 11
main/xmldoc.c | 2
pbx/dundi-parser.c | 8
pbx/pbx_config.c | 2
pbx/pbx_dundi.c | 10
res/ael/pval.c | 2
res/ari/ari_model_validators.c | 25
res/ari/ari_model_validators.h | 4
res/ari/ari_websockets.c | 1
res/ari/resource_applications.h | 26
res/ari/resource_asterisk.h | 18
res/ari/resource_bridges.c | 261 ++
res/ari/resource_bridges.h | 128 -
res/ari/resource_channels.c | 12
res/ari/resource_channels.h | 224 +-
res/ari/resource_device_states.h | 16
res/ari/resource_endpoints.h | 12
res/ari/resource_events.c | 56
res/ari/resource_events.h | 42
res/ari/resource_mailboxes.h | 18
res/ari/resource_playbacks.h | 14
res/ari/resource_recordings.c | 1
res/ari/resource_recordings.h | 38
res/ari/resource_sounds.h | 10
res/parking/parking_applications.c | 3
res/parking/parking_bridge.c | 17
res/parking/parking_bridge_features.c | 92
res/parking/parking_manager.c | 119 +
res/parking/res_parking.h | 13
res/res_agi.c | 4
res/res_ari.c | 3
res/res_ari_bridges.c | 143 +
res/res_ari_events.c | 192 +
res/res_ari_model.c | 2
res/res_calendar.c | 8
res/res_calendar_caldav.c | 7
res/res_calendar_ews.c | 2
res/res_calendar_icalendar.c | 2
res/res_config_odbc.c | 65
res/res_config_pgsql.c | 11
res/res_corosync.c | 382 +++
res/res_crypto.c | 2
res/res_fax.c | 59
res/res_fax_spandsp.c | 24
res/res_format_attr_celt.c | 6
res/res_format_attr_h263.c | 8
res/res_format_attr_h264.c | 8
res/res_format_attr_opus.c | 14
res/res_format_attr_silk.c | 10
res/res_hep.c | 2
res/res_hep_pjsip.c | 37
res/res_http_websocket.c | 39
res/res_jabber.c | 22
res/res_monitor.c | 4
res/res_musiconhold.c | 83
res/res_odbc.c | 2
res/res_parking.c | 8
res/res_pjsip.c | 26
res/res_pjsip/config_transport.c | 40
res/res_pjsip/location.c | 76
res/res_pjsip/pjsip_configuration.c | 21
res/res_pjsip/pjsip_options.c | 59
res/res_pjsip/presence_xml.c | 8
res/res_pjsip/security_events.c | 1
res/res_pjsip_exten_state.c | 5
res/res_pjsip_messaging.c | 12
res/res_pjsip_outbound_registration.c | 8
res/res_pjsip_pidf_digium_body_supplement.c | 9
res/res_pjsip_pubsub.c | 21
res/res_pjsip_refer.c | 106 -
res/res_pjsip_registrar.c | 11
res/res_pjsip_sdp_rtp.c | 29
res/res_pjsip_session.c | 108 -
res/res_pjsip_t38.c | 23
res/res_pktccops.c | 19
res/res_rtp_asterisk.c | 106 -
res/res_sorcery_config.c | 2
res/res_srtp.c | 10
res/res_stasis.c | 235 ++
res/res_stasis_answer.c | 7
res/res_stasis_playback.c | 12
res/res_stasis_recording.c | 7
res/res_stasis_snoop.c | 2
res/res_stun_monitor.c | 2
res/res_timing_dahdi.c | 4
res/res_xmpp.c | 4
res/stasis/app.c | 8
res/stasis/control.c | 22
res/stasis/control.h | 11
res/stasis_recording/stored.c | 1
rest-api-templates/ari_resource.h.mustache | 10
rest-api/api-docs/applications.json | 2
rest-api/api-docs/asterisk.json | 2
rest-api/api-docs/bridges.json | 97
rest-api/api-docs/channels.json | 4
rest-api/api-docs/deviceStates.json | 2
rest-api/api-docs/endpoints.json | 2
rest-api/api-docs/events.json | 76
rest-api/api-docs/mailboxes.json | 2
rest-api/api-docs/playbacks.json | 2
rest-api/api-docs/recordings.json | 2
rest-api/api-docs/sounds.json | 2
rest-api/resources.json | 2
sounds/Makefile | 6
sounds/sounds.xml | 117 -
tests/test_cel.c | 6
263 files changed, 7428 insertions(+), 4105 deletions(-)
----------------------------------------------------------------------

View File

@@ -0,0 +1,68 @@
<!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-12.3.2</title></head>
<body>
<h1 align="center"><a name="top">Release Summary</a></h1>
<h3 align="center">asterisk-12.3.2</h3>
<h3 align="center">Date: 2014-06-13</h3>
<h3 align="center">&lt;asteriskteam@digium.com&gt;</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-2014-005.html">AST-2014-005</a>, <a href="http://downloads.asterisk.org/pub/security/AST-2014-006.html">AST-2014-006</a>, <a href="http://downloads.asterisk.org/pub/security/AST-2014-007.html">AST-2014-007</a>, <a href="http://downloads.asterisk.org/pub/security/AST-2014-008.html">AST-2014-008</a></p>
<p>The data in this summary reflects changes that have been made since the previous release, asterisk-12.3.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 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/12.3.2?view=revision&revision=416058">416058</a></td><td>bebuild</td><td>Create 12.3.2</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/12.3.2?view=revision&revision=416063">416063</a></td><td>bebuild</td><td>Update .version, remove summaries</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/12.3.2?view=revision&revision=416075">416075</a></td><td>bebuild</td><td>Merge fix for regression caused by fix for AST-2014-007</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/12.3.2?view=revision&revision=416102">416102</a></td><td>bebuild</td><td>Importing release summary for 12.3.2 release.</td>
<td></td></tr><tr><td><a href="http://svn.digium.com/view/asterisk/tags/12.3.2?view=revision&revision=416140">416140</a></td><td>bebuild</td><td>Update ChangeLog</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 | 11 ++++
asterisk-12.3.1-summary.html | 74 -----------------------------
asterisk-12.3.1-summary.txt | 107 -------------------------------------------
channels/chan_sip.c | 6 ++
include/asterisk/tcptls.h | 16 ++++++
main/http.c | 3 +
main/manager.c | 6 ++
main/tcptls.c | 17 ++++++
9 files changed, 58 insertions(+), 184 deletions(-)
</pre><br/>
<hr/>
</body>
</html>

104
asterisk-12.3.2-summary.txt Normal file
View File

@@ -0,0 +1,104 @@
Release Summary
asterisk-12.3.2
Date: 2014-06-13
<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-2014-005, AST-2014-006, AST-2014-007,
AST-2014-008
The data in this summary reflects changes that have been made since the
previous release, asterisk-12.3.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 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 |
|----------+---------+-------------------------------+-------------------|
| 416058 | bebuild | Create 12.3.2 | |
|----------+---------+-------------------------------+-------------------|
| 416063 | bebuild | Update .version, remove | |
| | | summaries | |
|----------+---------+-------------------------------+-------------------|
| | | Merge fix for regression | |
| 416075 | bebuild | caused by fix for | |
| | | AST-2014-007 | |
|----------+---------+-------------------------------+-------------------|
| 416102 | bebuild | Importing release summary for | |
| | | 12.3.2 release. | |
|----------+---------+-------------------------------+-------------------|
| 416140 | bebuild | Update ChangeLog | |
+------------------------------------------------------------------------+
----------------------------------------------------------------------
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 | 11 ++++
asterisk-12.3.1-summary.html | 74 -----------------------------
asterisk-12.3.1-summary.txt | 107 -------------------------------------------
channels/chan_sip.c | 6 ++
include/asterisk/tcptls.h | 16 ++++++
main/http.c | 3 +
main/manager.c | 6 ++
main/tcptls.c | 17 ++++++
9 files changed, 58 insertions(+), 184 deletions(-)
----------------------------------------------------------------------

View File

@@ -3186,11 +3186,21 @@ static void *_sip_tcp_helper_thread(struct ast_tcptls_session_instance *tcptls_s
goto cleanup;
}
/*
* We cannot let the stream exclusively wait for data to arrive.
* We have to wake up the task to send outgoing messages.
*/
ast_tcptls_stream_set_exclusive_input(tcptls_session->stream_cookie, 0);
ast_tcptls_stream_set_timeout_sequence(tcptls_session->stream_cookie, ast_tvnow(),
tcptls_session->client ? -1 : (authtimeout * 1000));
for (;;) {
struct ast_str *str_save;
if (!tcptls_session->client && req.authenticated && !authenticated) {
authenticated = 1;
ast_tcptls_stream_set_timeout_disable(tcptls_session->stream_cookie);
ast_atomic_fetchadd_int(&unauth_sessions, -1);
}

View File

@@ -39,6 +39,12 @@ bindaddr=127.0.0.1
;
;sessionlimit=100
;
; session_inactivity specifies the number of milliseconds to wait for
; more data over the HTTP connection before closing it.
;
; Default: 30000
;session_inactivity=30000
;
; Whether Asterisk should serve static content from http-static
; Default is no.
;

View File

@@ -144,7 +144,66 @@ struct ast_tcptls_session_args {
const char *name;
};
/*! \brief
struct ast_tcptls_stream;
/*!
* \brief Disable the TCP/TLS stream timeout timer.
*
* \param stream TCP/TLS stream control data.
*
* \return Nothing
*/
void ast_tcptls_stream_set_timeout_disable(struct ast_tcptls_stream *stream);
/*!
* \brief Set the TCP/TLS stream inactivity timeout timer.
*
* \param stream TCP/TLS stream control data.
* \param timeout Number of milliseconds to wait for data transfer with the peer.
*
* \details This is basically how much time we are willing to spend
* in an I/O call before we declare the peer unresponsive.
*
* \note Setting timeout to -1 disables the timeout.
* \note Setting this timeout replaces the I/O sequence timeout timer.
*
* \return Nothing
*/
void ast_tcptls_stream_set_timeout_inactivity(struct ast_tcptls_stream *stream, int timeout);
/*!
* \brief Set the TCP/TLS stream I/O sequence timeout timer.
*
* \param stream TCP/TLS stream control data.
* \param start Time the I/O sequence timer starts.
* \param timeout Number of milliseconds from the start time before timeout.
*
* \details This is how much time are we willing to allow the peer
* to complete an operation that can take several I/O calls. The
* main use is as an authentication timer with us.
*
* \note Setting timeout to -1 disables the timeout.
* \note Setting this timeout replaces the inactivity timeout timer.
*
* \return Nothing
*/
void ast_tcptls_stream_set_timeout_sequence(struct ast_tcptls_stream *stream, struct timeval start, int timeout);
/*!
* \brief Set the TCP/TLS stream I/O if it can exclusively depend upon the set timeouts.
*
* \param stream TCP/TLS stream control data.
* \param exclusive_input TRUE if stream can exclusively wait for fd input.
* Otherwise, the stream will not wait for fd input. It will wait while
* trying to send data.
*
* \note The stream timeouts still need to be set.
*
* \return Nothing
*/
void ast_tcptls_stream_set_exclusive_input(struct ast_tcptls_stream *stream, int exclusive_input);
/*! \brief
* describes a server instance
*/
struct ast_tcptls_session_instance {
@@ -161,6 +220,8 @@ struct ast_tcptls_session_instance {
* extra data.
*/
struct ast_str *overflow_buf;
/*! ao2 FILE stream cookie object associated with f. */
struct ast_tcptls_stream *stream_cookie;
};
#if defined(HAVE_FUNOPEN)

View File

@@ -369,6 +369,7 @@ static force_inline void ast_slinear_saturated_divide(short *input, short *value
int ast_utils_init(void);
int ast_wait_for_input(int fd, int ms);
int ast_wait_for_output(int fd, int ms);
/*!
* \brief Try to write string, but wait no more than ms milliseconds

View File

@@ -71,6 +71,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#define DEFAULT_PORT 8088
#define DEFAULT_TLS_PORT 8089
#define DEFAULT_SESSION_LIMIT 100
#define DEFAULT_SESSION_INACTIVITY 30000 /* (ms) Idle time waiting for data. */
/* See http.h for more information about the SSL implementation */
#if defined(HAVE_OPENSSL) && (defined(HAVE_FUNOPEN) || defined(HAVE_FOPENCOOKIE))
@@ -78,6 +79,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#endif
static int session_limit = DEFAULT_SESSION_LIMIT;
static int session_inactivity = DEFAULT_SESSION_INACTIVITY;
static int session_count = 0;
static struct ast_tls_config http_tls_cfg;
@@ -1240,6 +1242,7 @@ static void *httpd_helper_thread(void *data)
enum ast_http_method http_method = AST_HTTP_UNKNOWN;
const char *transfer_encoding;
int remaining_headers;
int flags;
struct protoent *p;
if (ast_atomic_fetchadd_int(&session_count, +1) >= session_limit) {
@@ -1261,7 +1264,17 @@ static void *httpd_helper_thread(void *data)
ast_log(LOG_WARNING, "Some HTTP requests may be slow to respond.\n");
}
if (!fgets(buf, sizeof(buf), ser->f)) {
/* make sure socket is non-blocking */
flags = fcntl(ser->fd, F_GETFL);
flags |= O_NONBLOCK;
fcntl(ser->fd, F_SETFL, flags);
/* We can let the stream wait for data to arrive. */
ast_tcptls_stream_set_exclusive_input(ser->stream_cookie, 1);
ast_tcptls_stream_set_timeout_inactivity(ser->stream_cookie, session_inactivity);
if (!fgets(buf, sizeof(buf), ser->f) || feof(ser->f)) {
goto done;
}
@@ -1301,12 +1314,19 @@ static void *httpd_helper_thread(void *data)
/* process "Request Headers" lines */
remaining_headers = MAX_HTTP_REQUEST_HEADERS;
while (fgets(header_line, sizeof(header_line), ser->f)) {
char *name, *value;
for (;;) {
char *name;
char *value;
if (!fgets(header_line, sizeof(header_line), ser->f) || feof(ser->f)) {
ast_http_error(ser, 400, "Bad Request", "Timeout");
goto done;
}
/* Trim trailing characters */
ast_trim_blanks(header_line);
if (ast_strlen_zero(header_line)) {
/* A blank line ends the request header section. */
break;
}
@@ -1374,7 +1394,7 @@ done:
ast_variables_destroy(headers);
if (ser->f) {
fclose(ser->f);
ast_tcptls_close_session_file(ser);
}
ao2_ref(ser, -1);
ser = NULL;
@@ -1484,6 +1504,9 @@ static int __ast_http_load(int reload)
ast_sockaddr_setnull(&https_desc.local_address);
session_limit = DEFAULT_SESSION_LIMIT;
session_inactivity = DEFAULT_SESSION_INACTIVITY;
if (cfg) {
v = ast_variable_browse(cfg, "general");
for (; v; v = v->next) {
@@ -1529,6 +1552,12 @@ static int __ast_http_load(int reload)
ast_log(LOG_WARNING, "Invalid %s '%s' at line %d of http.conf\n",
v->name, v->value, v->lineno);
}
} else if (!strcasecmp(v->name, "session_inactivity")) {
if (ast_parse_arg(v->value, PARSE_INT32 |PARSE_DEFAULT | PARSE_IN_RANGE,
&session_inactivity, DEFAULT_SESSION_INACTIVITY, 1, INT_MAX)) {
ast_log(LOG_WARNING, "Invalid %s '%s' at line %d of http.conf\n",
v->name, v->value, v->lineno);
}
} else {
ast_log(LOG_WARNING, "Ignoring unknown option '%s' in http.conf\n", v->name);
}

View File

@@ -1123,7 +1123,6 @@ static char *manager_channelvars;
#define DEFAULT_REALM "asterisk"
static char global_realm[MAXHOSTNAMELEN]; /*!< Default realm */
static int block_sockets;
static int unauth_sessions = 0;
static struct stasis_subscription *acl_change_sub;
@@ -1770,15 +1769,7 @@ static void session_destructor(void *obj)
}
if (session->f != NULL) {
/*
* Issuing shutdown() is necessary here to avoid a race
* condition where the last data written may not appear
* in the the TCP stream. See ASTERISK-23548
*/
fflush(session->f);
if (session->fd != -1) {
shutdown(session->fd, SHUT_RDWR);
}
fclose(session->f);
}
if (eqe) {
@@ -5876,12 +5867,9 @@ static void *session_do(void *data)
ast_log(LOG_WARNING, "Failed to set manager tcp connection to TCP_NODELAY, getprotobyname(\"tcp\") failed\nSome manager actions may be slow to respond.\n");
}
/* make sure socket is non-blocking */
flags = fcntl(ser->fd, F_GETFL);
if (!block_sockets) { /* make sure socket is non-blocking */
flags |= O_NONBLOCK;
} else {
flags &= ~O_NONBLOCK;
}
flags |= O_NONBLOCK;
fcntl(ser->fd, F_SETFL, flags);
ao2_lock(session);
@@ -5907,11 +5895,23 @@ static void *session_do(void *data)
}
ao2_unlock(session);
/*
* We cannot let the stream exclusively wait for data to arrive.
* We have to wake up the task to send async events.
*/
ast_tcptls_stream_set_exclusive_input(ser->stream_cookie, 0);
ast_tcptls_stream_set_timeout_sequence(ser->stream_cookie,
ast_tvnow(), authtimeout * 1000);
astman_append(&s, "Asterisk Call Manager/%s\r\n", AMI_VERSION); /* welcome prompt */
for (;;) {
if ((res = do_message(&s)) < 0 || s.write_error) {
break;
}
if (session->authenticated) {
ast_tcptls_stream_set_timeout_disable(ser->stream_cookie);
}
}
/* session is over, explain why and terminate */
if (session->authenticated) {
@@ -6718,6 +6718,30 @@ static void xml_translate(struct ast_str **out, char *in, struct ast_variable *g
}
}
static void close_mansession_file(struct mansession *s)
{
if (s->f) {
if (fclose(s->f)) {
ast_log(LOG_ERROR, "fclose() failed: %s\n", strerror(errno));
}
s->f = NULL;
s->fd = -1;
} else if (s->fd != -1) {
/*
* Issuing shutdown() is necessary here to avoid a race
* condition where the last data written may not appear
* in the TCP stream. See ASTERISK-23548
*/
shutdown(s->fd, SHUT_RDWR);
if (close(s->fd)) {
ast_log(LOG_ERROR, "close() failed: %s\n", strerror(errno));
}
s->fd = -1;
} else {
ast_log(LOG_ERROR, "Attempted to close file/file descriptor on mansession without a valid file or file descriptor.\n");
}
}
static void process_output(struct mansession *s, struct ast_str **out, struct ast_variable *params, enum output_format format)
{
char *buf;
@@ -6745,29 +6769,7 @@ static void process_output(struct mansession *s, struct ast_str **out, struct as
xml_translate(out, "", params, format);
}
if (s->f) {
/*
* Issuing shutdown() is necessary here to avoid a race
* condition where the last data written may not appear
* in the the TCP stream. See ASTERISK-23548
*/
if (s->fd != -1) {
shutdown(s->fd, SHUT_RDWR);
}
if (fclose(s->f)) {
ast_log(LOG_ERROR, "fclose() failed: %s\n", strerror(errno));
}
s->f = NULL;
s->fd = -1;
} else if (s->fd != -1) {
shutdown(s->fd, SHUT_RDWR);
if (close(s->fd)) {
ast_log(LOG_ERROR, "close() failed: %s\n", strerror(errno));
}
s->fd = -1;
} else {
ast_log(LOG_ERROR, "process output attempted to close file/file descriptor on mansession without a valid file or file descriptor.\n");
}
close_mansession_file(s);
}
static int generic_http_callback(struct ast_tcptls_session_instance *ser,
@@ -7558,7 +7560,6 @@ static char *handle_manager_show_settings(struct ast_cli_entry *e, int cmd, stru
ast_cli(a->fd, FORMAT, "Timestamp events:", AST_CLI_YESNO(timestampevents));
ast_cli(a->fd, FORMAT, "Channel vars:", S_OR(manager_channelvars, ""));
ast_cli(a->fd, FORMAT, "Debug:", AST_CLI_YESNO(manager_debug));
ast_cli(a->fd, FORMAT, "Block sockets:", AST_CLI_YESNO(block_sockets));
#undef FORMAT
#undef FORMAT2
@@ -8161,8 +8162,6 @@ static int __init_manager(int reload, int by_external_config)
if (!strcasecmp(var->name, "enabled")) {
manager_enabled = ast_true(val);
} else if (!strcasecmp(var->name, "block-sockets")) {
block_sockets = ast_true(val);
} else if (!strcasecmp(var->name, "webenabled")) {
webmanager_enabled = ast_true(val);
} else if (!strcasecmp(var->name, "port")) {

View File

@@ -50,102 +50,498 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/astobj2.h"
#include "asterisk/pbx.h"
/*! \brief
* replacement read/write functions for SSL support.
* We use wrappers rather than SSL_read/SSL_write directly so
* we can put in some debugging.
/*! ao2 object used for the FILE stream fopencookie()/funopen() cookie. */
struct ast_tcptls_stream {
/*! SSL state if not NULL */
SSL *ssl;
/*!
* \brief Start time from when an I/O sequence must complete
* by struct ast_tcptls_stream.timeout.
*
* \note If struct ast_tcptls_stream.start.tv_sec is zero then
* start time is the current I/O request.
*/
struct timeval start;
/*!
* \brief The socket returned by accept().
*
* \note Set to -1 if the stream is closed.
*/
int fd;
/*!
* \brief Timeout in ms relative to struct ast_tcptls_stream.start
* to wait for an event on struct ast_tcptls_stream.fd.
*
* \note Set to -1 to disable timeout.
* \note The socket needs to be set to non-blocking for the timeout
* feature to work correctly.
*/
int timeout;
/*! TRUE if stream can exclusively wait for fd input. */
int exclusive_input;
};
void ast_tcptls_stream_set_timeout_disable(struct ast_tcptls_stream *stream)
{
ast_assert(stream != NULL);
stream->timeout = -1;
}
void ast_tcptls_stream_set_timeout_inactivity(struct ast_tcptls_stream *stream, int timeout)
{
ast_assert(stream != NULL);
stream->start.tv_sec = 0;
stream->timeout = timeout;
}
void ast_tcptls_stream_set_timeout_sequence(struct ast_tcptls_stream *stream, struct timeval start, int timeout)
{
ast_assert(stream != NULL);
stream->start = start;
stream->timeout = timeout;
}
void ast_tcptls_stream_set_exclusive_input(struct ast_tcptls_stream *stream, int exclusive_input)
{
ast_assert(stream != NULL);
stream->exclusive_input = exclusive_input;
}
/*!
* \internal
* \brief fopencookie()/funopen() stream read function.
*
* \param cookie Stream control data.
* \param buf Where to put read data.
* \param size Size of the buffer.
*
* \retval number of bytes put into buf.
* \retval 0 on end of file.
* \retval -1 on error.
*/
#ifdef DO_SSL
static HOOK_T ssl_read(void *cookie, char *buf, LEN_T len)
static HOOK_T tcptls_stream_read(void *cookie, char *buf, LEN_T size)
{
int i = SSL_read(cookie, buf, len-1);
#if 0
if (i >= 0) {
buf[i] = '\0';
struct ast_tcptls_stream *stream = cookie;
struct timeval start;
int ms;
int res;
if (!size) {
/* You asked for no data you got no data. */
return 0;
}
if (!stream || stream->fd == -1) {
errno = EBADF;
return -1;
}
if (stream->start.tv_sec) {
start = stream->start;
} else {
start = ast_tvnow();
}
#if defined(DO_SSL)
if (stream->ssl) {
for (;;) {
res = SSL_read(stream->ssl, buf, size);
if (0 < res) {
/* We read some payload data. */
return res;
}
switch (SSL_get_error(stream->ssl, res)) {
case SSL_ERROR_ZERO_RETURN:
/* Report EOF for a shutdown */
ast_debug(1, "TLS clean shutdown alert reading data\n");
return 0;
case SSL_ERROR_WANT_READ:
if (!stream->exclusive_input) {
/* We cannot wait for data now. */
errno = EAGAIN;
return -1;
}
while ((ms = ast_remaining_ms(start, stream->timeout))) {
res = ast_wait_for_input(stream->fd, ms);
if (0 < res) {
/* Socket is ready to be read. */
break;
}
if (res < 0) {
if (errno == EINTR || errno == EAGAIN) {
/* Try again. */
continue;
}
ast_debug(1, "TLS socket error waiting for read data: %s\n",
strerror(errno));
return -1;
}
}
break;
case SSL_ERROR_WANT_WRITE:
while ((ms = ast_remaining_ms(start, stream->timeout))) {
res = ast_wait_for_output(stream->fd, ms);
if (0 < res) {
/* Socket is ready to be written. */
break;
}
if (res < 0) {
if (errno == EINTR || errno == EAGAIN) {
/* Try again. */
continue;
}
ast_debug(1, "TLS socket error waiting for write space: %s\n",
strerror(errno));
return -1;
}
}
break;
default:
/* Report EOF for an undecoded SSL or transport error. */
ast_debug(1, "TLS transport or SSL error reading data\n");
return 0;
}
if (!ms) {
/* Report EOF for a timeout */
ast_debug(1, "TLS timeout reading data\n");
return 0;
}
}
}
#endif /* defined(DO_SSL) */
for (;;) {
res = read(stream->fd, buf, size);
if (0 <= res || !stream->exclusive_input) {
/* Got data or we cannot wait for it. */
return res;
}
if (errno != EINTR && errno != EAGAIN) {
/* Not a retryable error. */
ast_debug(1, "TCP socket error reading data: %s\n",
strerror(errno));
return -1;
}
ms = ast_remaining_ms(start, stream->timeout);
if (!ms) {
/* Report EOF for a timeout */
ast_debug(1, "TCP timeout reading data\n");
return 0;
}
ast_wait_for_input(stream->fd, ms);
}
ast_verb(0, "ssl read size %d returns %d <%s>\n", (int)len, i, buf);
#endif
return i;
}
static HOOK_T ssl_write(void *cookie, const char *buf, LEN_T len)
/*!
* \internal
* \brief fopencookie()/funopen() stream write function.
*
* \param cookie Stream control data.
* \param buf Where to get data to write.
* \param size Size of the buffer.
*
* \retval number of bytes written from buf.
* \retval -1 on error.
*/
static HOOK_T tcptls_stream_write(void *cookie, const char *buf, LEN_T size)
{
#if 0
char *s = ast_alloca(len+1);
struct ast_tcptls_stream *stream = cookie;
struct timeval start;
int ms;
int res;
int written;
int remaining;
strncpy(s, buf, len);
s[len] = '\0';
ast_verb(0, "ssl write size %d <%s>\n", (int)len, s);
#endif
return SSL_write(cookie, buf, len);
if (!size) {
/* You asked to write no data you wrote no data. */
return 0;
}
if (!stream || stream->fd == -1) {
errno = EBADF;
return -1;
}
if (stream->start.tv_sec) {
start = stream->start;
} else {
start = ast_tvnow();
}
#if defined(DO_SSL)
if (stream->ssl) {
written = 0;
remaining = size;
for (;;) {
res = SSL_write(stream->ssl, buf + written, remaining);
if (res == remaining) {
/* Everything was written. */
return size;
}
if (0 < res) {
/* Successfully wrote part of the buffer. Try to write the rest. */
written += res;
remaining -= res;
continue;
}
switch (SSL_get_error(stream->ssl, res)) {
case SSL_ERROR_ZERO_RETURN:
ast_debug(1, "TLS clean shutdown alert writing data\n");
if (written) {
/* Report partial write. */
return written;
}
errno = EBADF;
return -1;
case SSL_ERROR_WANT_READ:
ms = ast_remaining_ms(start, stream->timeout);
if (!ms) {
/* Report partial write. */
ast_debug(1, "TLS timeout writing data (want read)\n");
return written;
}
ast_wait_for_input(stream->fd, ms);
break;
case SSL_ERROR_WANT_WRITE:
ms = ast_remaining_ms(start, stream->timeout);
if (!ms) {
/* Report partial write. */
ast_debug(1, "TLS timeout writing data (want write)\n");
return written;
}
ast_wait_for_output(stream->fd, ms);
break;
default:
/* Undecoded SSL or transport error. */
ast_debug(1, "TLS transport or SSL error writing data\n");
if (written) {
/* Report partial write. */
return written;
}
errno = EBADF;
return -1;
}
}
}
#endif /* defined(DO_SSL) */
written = 0;
remaining = size;
for (;;) {
res = write(stream->fd, buf + written, remaining);
if (res == remaining) {
/* Yay everything was written. */
return size;
}
if (0 < res) {
/* Successfully wrote part of the buffer. Try to write the rest. */
written += res;
remaining -= res;
continue;
}
if (errno != EINTR && errno != EAGAIN) {
/* Not a retryable error. */
ast_debug(1, "TCP socket error writing: %s\n", strerror(errno));
if (written) {
return written;
}
return -1;
}
ms = ast_remaining_ms(start, stream->timeout);
if (!ms) {
/* Report partial write. */
ast_debug(1, "TCP timeout writing data\n");
return written;
}
ast_wait_for_output(stream->fd, ms);
}
}
static int ssl_close(void *cookie)
/*!
* \internal
* \brief fopencookie()/funopen() stream close function.
*
* \param cookie Stream control data.
*
* \retval 0 on success.
* \retval -1 on error.
*/
static int tcptls_stream_close(void *cookie)
{
int cookie_fd = SSL_get_fd(cookie);
int ret;
struct ast_tcptls_stream *stream = cookie;
if (!stream) {
errno = EBADF;
return -1;
}
if (stream->fd != -1) {
#if defined(DO_SSL)
if (stream->ssl) {
int res;
/*
* According to the TLS standard, it is acceptable for an
* application to only send its shutdown alert and then
* close the underlying connection without waiting for
* the peer's response (this way resources can be saved,
* as the process can already terminate or serve another
* connection).
*/
res = SSL_shutdown(stream->ssl);
if (res < 0) {
ast_log(LOG_ERROR, "SSL_shutdown() failed: %d\n",
SSL_get_error(stream->ssl, res));
}
if (!stream->ssl->server) {
/* For client threads, ensure that the error stack is cleared */
ERR_remove_state(0);
}
SSL_free(stream->ssl);
stream->ssl = NULL;
}
#endif /* defined(DO_SSL) */
if (cookie_fd > -1) {
/*
* According to the TLS standard, it is acceptable for an application to only send its shutdown
* alert and then close the underlying connection without waiting for the peer's response (this
* way resources can be saved, as the process can already terminate or serve another connection).
* Issuing shutdown() is necessary here to avoid a race
* condition where the last data written may not appear
* in the TCP stream. See ASTERISK-23548
*/
if ((ret = SSL_shutdown(cookie)) < 0) {
ast_log(LOG_ERROR, "SSL_shutdown() failed: %d\n", SSL_get_error(cookie, ret));
}
if (!((SSL*)cookie)->server) {
/* For client threads, ensure that the error stack is cleared */
ERR_remove_state(0);
}
SSL_free(cookie);
/* adding shutdown(2) here has no added benefit */
if (close(cookie_fd)) {
shutdown(stream->fd, SHUT_RDWR);
if (close(stream->fd)) {
ast_log(LOG_ERROR, "close() failed: %s\n", strerror(errno));
}
stream->fd = -1;
}
ao2_t_ref(stream, -1, "Closed tcptls stream cookie");
return 0;
}
#endif /* DO_SSL */
/*!
* \internal
* \brief fopencookie()/funopen() stream destructor function.
*
* \param cookie Stream control data.
*
* \return Nothing
*/
static void tcptls_stream_dtor(void *cookie)
{
struct ast_tcptls_stream *stream = cookie;
ast_assert(stream->fd == -1);
}
/*!
* \internal
* \brief fopencookie()/funopen() stream allocation function.
*
* \retval stream_cookie on success.
* \retval NULL on error.
*/
static struct ast_tcptls_stream *tcptls_stream_alloc(void)
{
struct ast_tcptls_stream *stream;
stream = ao2_alloc_options(sizeof(*stream), tcptls_stream_dtor,
AO2_ALLOC_OPT_LOCK_NOLOCK);
if (stream) {
stream->fd = -1;
stream->timeout = -1;
}
return stream;
}
/*!
* \internal
* \brief Open a custom FILE stream for tcptls.
*
* \param stream Stream cookie control data.
* \param ssl SSL state if not NULL.
* \param fd Socket file descriptor.
* \param timeout ms to wait for an event on fd. -1 if timeout disabled.
*
* \retval fp on success.
* \retval NULL on error.
*/
static FILE *tcptls_stream_fopen(struct ast_tcptls_stream *stream, SSL *ssl, int fd, int timeout)
{
FILE *fp;
#if defined(HAVE_FOPENCOOKIE) /* the glibc/linux interface */
static const cookie_io_functions_t cookie_funcs = {
tcptls_stream_read,
tcptls_stream_write,
NULL,
tcptls_stream_close
};
#endif /* defined(HAVE_FOPENCOOKIE) */
if (fd == -1) {
/* Socket not open. */
return NULL;
}
stream->ssl = ssl;
stream->fd = fd;
stream->timeout = timeout;
ao2_t_ref(stream, +1, "Opening tcptls stream cookie");
#if defined(HAVE_FUNOPEN) /* the BSD interface */
fp = funopen(stream, tcptls_stream_read, tcptls_stream_write, NULL,
tcptls_stream_close);
#elif defined(HAVE_FOPENCOOKIE) /* the glibc/linux interface */
fp = fopencookie(stream, "w+", cookie_funcs);
#else
/* could add other methods here */
ast_debug(2, "No stream FILE methods attempted!\n");
fp = NULL;
#endif
if (!fp) {
stream->fd = -1;
ao2_t_ref(stream, -1, "Failed to open tcptls stream cookie");
}
return fp;
}
HOOK_T ast_tcptls_server_read(struct ast_tcptls_session_instance *tcptls_session, void *buf, size_t count)
{
if (tcptls_session->fd == -1) {
ast_log(LOG_ERROR, "server_read called with an fd of -1\n");
if (!tcptls_session->stream_cookie || tcptls_session->stream_cookie->fd == -1) {
ast_log(LOG_ERROR, "TCP/TLS read called on invalid stream.\n");
errno = EIO;
return -1;
}
#ifdef DO_SSL
if (tcptls_session->ssl) {
return ssl_read(tcptls_session->ssl, buf, count);
}
#endif
return read(tcptls_session->fd, buf, count);
return tcptls_stream_read(tcptls_session->stream_cookie, buf, count);
}
HOOK_T ast_tcptls_server_write(struct ast_tcptls_session_instance *tcptls_session, const void *buf, size_t count)
{
if (tcptls_session->fd == -1) {
ast_log(LOG_ERROR, "server_write called with an fd of -1\n");
if (!tcptls_session->stream_cookie || tcptls_session->stream_cookie->fd == -1) {
ast_log(LOG_ERROR, "TCP/TLS write called on invalid stream.\n");
errno = EIO;
return -1;
}
#ifdef DO_SSL
if (tcptls_session->ssl) {
return ssl_write(tcptls_session->ssl, buf, count);
}
#endif
return write(tcptls_session->fd, buf, count);
return tcptls_stream_write(tcptls_session->stream_cookie, buf, count);
}
static void session_instance_destructor(void *obj)
{
struct ast_tcptls_session_instance *i = obj;
if (i->stream_cookie) {
ao2_t_ref(i->stream_cookie, -1, "Destroying tcptls session instance");
i->stream_cookie = NULL;
}
ast_free(i->overflow_buf);
}
@@ -177,12 +573,21 @@ static void *handle_tcptls_connection(void *data)
return NULL;
}
tcptls_session->stream_cookie = tcptls_stream_alloc();
if (!tcptls_session->stream_cookie) {
ast_tcptls_close_session_file(tcptls_session);
ao2_ref(tcptls_session, -1);
return NULL;
}
/*
* open a FILE * as appropriate.
*/
if (!tcptls_session->parent->tls_cfg) {
if ((tcptls_session->f = fdopen(tcptls_session->fd, "w+"))) {
if(setvbuf(tcptls_session->f, NULL, _IONBF, 0)) {
tcptls_session->f = tcptls_stream_fopen(tcptls_session->stream_cookie, NULL,
tcptls_session->fd, -1);
if (tcptls_session->f) {
if (setvbuf(tcptls_session->f, NULL, _IONBF, 0)) {
ast_tcptls_close_session_file(tcptls_session);
}
}
@@ -192,19 +597,8 @@ static void *handle_tcptls_connection(void *data)
SSL_set_fd(tcptls_session->ssl, tcptls_session->fd);
if ((ret = ssl_setup(tcptls_session->ssl)) <= 0) {
ast_verb(2, "Problem setting up ssl connection: %s\n", ERR_error_string(ERR_get_error(), err));
} else {
#if defined(HAVE_FUNOPEN) /* the BSD interface */
tcptls_session->f = funopen(tcptls_session->ssl, ssl_read, ssl_write, NULL, ssl_close);
#elif defined(HAVE_FOPENCOOKIE) /* the glibc/linux interface */
static const cookie_io_functions_t cookie_funcs = {
ssl_read, ssl_write, NULL, ssl_close
};
tcptls_session->f = fopencookie(tcptls_session->ssl, "w+", cookie_funcs);
#else
/* could add other methods here */
ast_debug(2, "no tcptls_session->f methods attempted!\n");
#endif
} else if ((tcptls_session->f = tcptls_stream_fopen(tcptls_session->stream_cookie,
tcptls_session->ssl, tcptls_session->fd, -1))) {
if ((tcptls_session->client && !ast_test_flag(&tcptls_session->parent->tls_cfg->flags, AST_SSL_DONT_VERIFY_SERVER))
|| (!tcptls_session->client && ast_test_flag(&tcptls_session->parent->tls_cfg->flags, AST_SSL_VERIFY_CLIENT))) {
X509 *peer;
@@ -625,21 +1019,18 @@ error:
void ast_tcptls_close_session_file(struct ast_tcptls_session_instance *tcptls_session)
{
if (tcptls_session->f) {
/*
* Issuing shutdown() is necessary here to avoid a race
* condition where the last data written may not appear
* in the TCP stream. See ASTERISK-23548
*/
fflush(tcptls_session->f);
if (tcptls_session->fd != -1) {
shutdown(tcptls_session->fd, SHUT_RDWR);
}
if (fclose(tcptls_session->f)) {
ast_log(LOG_ERROR, "fclose() failed: %s\n", strerror(errno));
}
tcptls_session->f = NULL;
tcptls_session->fd = -1;
} else if (tcptls_session->fd != -1) {
/*
* Issuing shutdown() is necessary here to avoid a race
* condition where the last data written may not appear
* in the TCP stream. See ASTERISK-23548
*/
shutdown(tcptls_session->fd, SHUT_RDWR);
if (close(tcptls_session->fd)) {
ast_log(LOG_ERROR, "close() failed: %s\n", strerror(errno));

View File

@@ -1252,13 +1252,24 @@ int ast_pthread_create_detached_stack(pthread_t *thread, pthread_attr_t *attr, v
int ast_wait_for_input(int fd, int ms)
{
struct pollfd pfd[1];
memset(pfd, 0, sizeof(pfd));
pfd[0].fd = fd;
pfd[0].events = POLLIN|POLLPRI;
pfd[0].events = POLLIN | POLLPRI;
return ast_poll(pfd, 1, ms);
}
static int ast_wait_for_output(int fd, int timeoutms)
int ast_wait_for_output(int fd, int ms)
{
struct pollfd pfd[1];
memset(pfd, 0, sizeof(pfd));
pfd[0].fd = fd;
pfd[0].events = POLLOUT;
return ast_poll(pfd, 1, ms);
}
static int wait_for_output(int fd, int timeoutms)
{
struct pollfd pfd = {
.fd = fd,
@@ -1318,7 +1329,7 @@ int ast_carefulwrite(int fd, char *s, int len, int timeoutms)
int elapsed = 0;
while (len) {
if (ast_wait_for_output(fd, timeoutms - elapsed)) {
if (wait_for_output(fd, timeoutms - elapsed)) {
return -1;
}
@@ -1359,7 +1370,7 @@ int ast_careful_fwrite(FILE *f, int fd, const char *src, size_t len, int timeout
int elapsed = 0;
while (len) {
if (ast_wait_for_output(fd, timeoutms - elapsed)) {
if (wait_for_output(fd, timeoutms - elapsed)) {
/* poll returned a fatal error, so bail out immediately. */
return -1;
}

View File

@@ -750,8 +750,13 @@ int AST_OPTIONAL_API_NAME(ast_websocket_uri_cb)(struct ast_tcptls_session_instan
protocol_handler->callback(session, get_vars, headers);
ao2_ref(protocol_handler, -1);
/* By dropping the FILE* from the session it won't get closed when the HTTP server cleans up */
/*
* By dropping the FILE* and fd from the session the connection
* won't get closed when the HTTP server cleans up because we
* passed the connection to the protocol handler.
*/
ser->f = NULL;
ser->fd = -1;
return 0;
}

View File

@@ -2164,6 +2164,11 @@ int ast_sip_thread_is_servant(void)
{
uint32_t *servant_id;
if (monitor_thread &&
pthread_self() == *(pthread_t *)pj_thread_get_os_handle(monitor_thread)) {
return 1;
}
servant_id = ast_threadstorage_get(&servant_id_storage, sizeof(*servant_id));
if (!servant_id) {
return 0;

View File

@@ -777,12 +777,20 @@ static pj_bool_t pubsub_on_rx_subscribe_request(pjsip_rx_data *rdata)
expires_header = pjsip_msg_find_hdr(rdata->msg_info.msg, PJSIP_H_EXPIRES, rdata->msg_info.msg->hdr.next);
if (expires_header && expires_header->ivalue < endpoint->subscription.minexpiry) {
ast_log(LOG_WARNING, "Subscription expiration %d is too brief for endpoint %s. Minimum is %u\n",
if (expires_header) {
if (expires_header->ivalue == 0) {
ast_log(LOG_WARNING, "Susbscription request from endpoint %s rejected. Expiration of 0 is invalid\n",
ast_sorcery_object_get_id(endpoint));
pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 400, NULL, NULL, NULL);
return PJ_TRUE;
}
if (expires_header->ivalue < endpoint->subscription.minexpiry) {
ast_log(LOG_WARNING, "Subscription expiration %d is too brief for endpoint %s. Minimum is %d\n",
expires_header->ivalue, ast_sorcery_object_get_id(endpoint), endpoint->subscription.minexpiry);
pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 423, NULL, NULL, NULL);
return PJ_TRUE;
}
pjsip_endpt_respond_stateless(ast_sip_get_pjsip_endpoint(), rdata, 423, NULL, NULL, NULL);
return PJ_TRUE;
}
}
event_header = pjsip_msg_find_hdr_by_name(rdata->msg_info.msg, &str_event_name, rdata->msg_info.msg->hdr.next);
if (!event_header) {