mirror of
https://github.com/asterisk/asterisk.git
synced 2025-08-28 00:53:35 +00:00
Compare commits
20 Commits
11.23.0-rc
...
11.21.0
Author | SHA1 | Date | |
---|---|---|---|
|
3cdb24a93c | ||
|
1829955c12 | ||
|
8720b171ce | ||
|
731f22c9e8 | ||
|
2d8ed745d8 | ||
|
b4eef8b8d4 | ||
|
c09fbe1248 | ||
|
a2a4b93864 | ||
|
0f399a5a5f | ||
|
1d6ac3f797 | ||
|
e909f4a78c | ||
|
a2b5d4fa54 | ||
|
45f8ba7cb3 | ||
|
aaff9871f3 | ||
|
175c1afbb5 | ||
|
3183add62b | ||
|
a07795c697 | ||
|
2108015d2f | ||
|
a2e60af7ff | ||
|
58966343b3 |
1
.lastclean
Normal file
1
.lastclean
Normal file
@@ -0,0 +1 @@
|
||||
40
|
153
asterisk-11.21.0-summary.html
Normal file
153
asterisk-11.21.0-summary.html
Normal file
@@ -0,0 +1,153 @@
|
||||
<!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"><title>Release Summary - asterisk-11.21.0</title><h1 align="center"><a name="top">Release Summary</a></h1><h3 align="center">asterisk-11.21.0</h3><h3 align="center">Date: 2016-01-15</h3><h3 align="center"><asteriskteam@digium.com></h3><hr><h2 align="center">Table of Contents</h2><ol>
|
||||
<li><a href="#summary">Summary</a></li>
|
||||
<li><a href="#contributors">Contributors</a></li>
|
||||
<li><a href="#closed_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><p>This release is a point release of an existing major version. The changes included were made to address problems that have been identified in this release series, or are minor, backwards compatible new features or improvements. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous version 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-11.20.0.</p><hr><a name="contributors"><h2 align="center">Contributors</h2></a><center><a href="#top">[Back to Top]</a></center><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 affected by commits that went into this release.</p><table width="100%" border="0">
|
||||
<tr><th width="33%">Coders</th><th width="33%">Testers</th><th width="33%">Reporters</th></tr>
|
||||
<tr valign="top"><td width="33%">14 Kevin Harwell <kharwell@lunkwill><br/>7 Richard Mudgett <rmudgett@digium.com><br/>5 Kevin Harwell <kharwell@lunkwill.digium.internal><br/>5 Alexander Traud <pabstraud@compuserve.com><br/>4 Walter Doekes <walter+asterisk@wjd.nu><br/>4 Joshua Colp <jcolp@digium.com><br/>3 Matt Jordan <mjordan@digium.com><br/>3 Ivan Poddubny <ivan.poddubny@gmail.com><br/>2 Corey Farrell <git@cfware.com><br/>1 Filip Jenicek <phill@janevim.cz><br/>1 Eugene Voityuk <eugene@thirdlane.com><br/>1 Steve Davies <steve@one47.co.uk><br/>1 Olle Johansson (License 5267)<br/>1 Florian Sauerteig <ffs@ccn.net><br/>1 Jonathan Rose <jrose@digium.com><br/>1 gtjoseph <george.joseph@fairview5.com><br/>1 server-pandora <server-pandora@xencall.com><br/>1 mdu113 <mulitskiy@acedsl.com><br/></td><td width="33%">1 gtjoseph<br/>1 starting asterisk -c until the colors stopped<br/></td><td width="33%">4 Alexander Traud <pabstraud@compuserve.com><br/>3 Walter Doekes <walter+asterisk@wjd.nu><br/>3 Joshua Colp <jcolp@digium.com><br/>3 Michael Keuter <lists@mksolutions.info><br/>3 Matt Jordan <mjordan@digium.com><br/>1 Rusty Newton <rnewton@digium.com><br/>1 ffs <ffs@ccn.net><br/>1 Andrew Nagy<br/>1 Ben Langfeld<br/>1 Kevin Harwell <kharwell@digium.com><br/>1 Krzysztof Trempala<br/>1 George Joseph <george.joseph@fairview5.com><br/>1 mdu113 <mulitskiy@acedsl.com><br/>1 Dudás József <jozsef.dudas@gmail.com><br/>1 Hiroaki Komatsu <komatsu.hiroaki@po.ntts.co.jp><br/>1 Ben Langfeld <ben@langfeld.me><br/>1 Rusty Newton<br/>1 Corey Farrell <git@cfware.com><br/>1 Bojan Nemčić<br/>1 Krzysztof Trempala <k.trempala@slican.pl><br/>1 Badalian Vyacheslav <slavon.net@gmail.com><br/>1 Olle Johansson <oej@edvina.net><br/>1 Sean Pimental<br/>1 Aleksei Kulakov <each.nir.vine@gmail.com><br/>1 gtjoseph<br/>1 Badalian Vyacheslav<br/>1 Olle Johansson<br/>1 Andrew Nagy <andrew.nagy@the159.com><br/>1 Filip Jenicek <phill@janevim.cz><br/>1 Dade Brandon <dade@xencall.com><br/>1 Bojan Nemčić <bojan.nemcic@voxdiversa.hr><br/>1 Richard Mudgett <rmudgett@digium.com><br/>1 dea <dan_austin@fitawi.com><br/></td></tr>
|
||||
</table><hr><a name="closed_issues"><h2 align="center">Closed Issues</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p><h3>Bug</h3><h4>Category: Addons/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25640">ASTERISK-25640</a>: pbx: Deadlock on features reload and state change hint.<br/>Reported by: Krzysztof Trempala<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e909f4a78c04f201bc633f45f8e270c24b611d13">[e909f4a78c]</a> Kevin Harwell -- pbx: Deadlock between contexts container and context_merge locks</li>
|
||||
</ul><br><h4>Category: Applications/app_meetme</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25569">ASTERISK-25569</a>: app_meetme: Audio quality issues<br/>Reported by: Corey Farrell<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=fa7329b72d3e00d32252457b82544fc143e3d383">[fa7329b72d]</a> Corey Farrell -- app_meetme: Set default value for audio_buffers.</li>
|
||||
</ul><br><h4>Category: Channels/chan_dahdi</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25494">ASTERISK-25494</a>: build: GCC 5.1.x catches some new const, array bounds and missing paren issues<br/>Reported by: George Joseph<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=992879aa431bca204375b53e5735f39a6ed539c7">[992879aa43]</a> gtjoseph -- build: GCC 5.1.x catches some new const, array bounds and missing paren issues</li>
|
||||
</ul><br><h4>Category: Channels/chan_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25455">ASTERISK-25455</a>: Deadlock of PJSIP realtime over res_config_pgsql <br/>Reported by: mdu113<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=9f4892ece40d493c5c187f668fe0877e26ae6b36">[9f4892ece4]</a> mdu113 -- res_config_pgsql.c: Fix deadlock loading realtime configuration.</li>
|
||||
</ul><br><h4>Category: Channels/chan_sip/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25364">ASTERISK-25364</a>: [patch]Issue a TCP connection(kernel) and thread of asterisk is not released<br/>Reported by: Hiroaki Komatsu<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e1d08a39c51d110e0aa7af2848b5d0a9947239e9">[e1d08a39c5]</a> Jonathan Rose -- chan_sip: Add TCP/TLS keepalive to TCP/TLS server</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25610">ASTERISK-25610</a>: Asterisk crash during "sip reload"<br/>Reported by: Dudás József<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=47118fb9473af6f361792c83970cc35be573663b">[47118fb947]</a> Richard Mudgett -- chan_sip: Fix crash involving the bogus peer during sip reload.</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25476">ASTERISK-25476</a>: chan_sip loses registrations after a while<br/>Reported by: Michael Keuter<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=bd4aee4b7bd10f793ae0bbd7db8fcdb9eff9c65c">[bd4aee4b7b]</a> Richard Mudgett -- sched.c: Make not return a sched id of 0.</li>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=394b8a40c1508ef5617dfa231886aacc163dad0e">[394b8a40c1]</a> Richard Mudgett -- Audit improper usage of scheduler exposed by 5c713fdf18f.</li>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e74110188d7e4c959d6c3ddbe40635a639b33a14">[e74110188d]</a> Steve Davies -- Further fixes to improper usage of scheduler</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25494">ASTERISK-25494</a>: build: GCC 5.1.x catches some new const, array bounds and missing paren issues<br/>Reported by: George Joseph<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=992879aa431bca204375b53e5735f39a6ed539c7">[992879aa43]</a> gtjoseph -- build: GCC 5.1.x catches some new const, array bounds and missing paren issues</li>
|
||||
</ul><br><h4>Category: Channels/chan_sip/IPv6</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25443">ASTERISK-25443</a>: [patch]IPv6 - Potential issue in via header parsing<br/>Reported by: ffs<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=9354c1a64f567e552b3e0e376610a0503231275a">[9354c1a64f]</a> Florian Sauerteig -- chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers.</li>
|
||||
</ul><br><h4>Category: Channels/chan_sip/Interoperability</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25135">ASTERISK-25135</a>: [patch]RTP Timeout hangup cause code missing<br/>Reported by: Olle Johansson<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b3101fb8df3bccfd8bd690aca2583d47e7d520f2">[b3101fb8df]</a> Olle Johansson -- channels/chan_sip: Set cause code to 44 on RTP timeout</li>
|
||||
</ul><br><h4>Category: Channels/chan_sip/T.38</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25609">ASTERISK-25609</a>: [patch]Asterisk may crash when calling ast_channel_get_t38_state(c)<br/>Reported by: Filip Jenicek<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=62574fb9dcbecf3dcd3b83b619900656ea1bd3db">[62574fb9dc]</a> Filip Jenicek -- chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)</li>
|
||||
</ul><br><h4>Category: Channels/chan_sip/WebSocket</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-24146">ASTERISK-24146</a>: [patch]No audio on WebRtc caller side when answer waiting time is more than ~7sec<br/>Reported by: Aleksei Kulakov<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=badac7c340248637740da7ff4421c9f22a7e399e">[badac7c340]</a> Eugene Voityuk -- chan_sip.c: Start ICE negotiation when response is sent or received.</li>
|
||||
</ul><br><h4>Category: Channels/chan_skinny</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25494">ASTERISK-25494</a>: build: GCC 5.1.x catches some new const, array bounds and missing paren issues<br/>Reported by: George Joseph<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=992879aa431bca204375b53e5735f39a6ed539c7">[992879aa43]</a> gtjoseph -- build: GCC 5.1.x catches some new const, array bounds and missing paren issues</li>
|
||||
</ul><br><h4>Category: Codecs/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25616">ASTERISK-25616</a>: Warning with a Codec Module which supports PLC with FEC<br/>Reported by: Alexander Traud<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=ac8e285dfd883b82d035b727c932efa2a782b72a">[ac8e285dfd]</a> Alexander Traud -- translate: Avoid a warning message when doing FEC within Opus Codec.</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25498">ASTERISK-25498</a>: Asterisk crashes when negotiating g729 without that module installed<br/>Reported by: Ben Langfeld<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=0a8fe8de118e587e162234c21f700eb0306ff064">[0a8fe8de11]</a> Joshua Colp -- Fix crash in audiohook translate to slin</li>
|
||||
</ul><br><h4>Category: Codecs/codec_resample</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25599">ASTERISK-25599</a>: [patch] SLIN Resampling Codec only 80 msec<br/>Reported by: Alexander Traud<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a388ff29e72b2348333a5316de49289b78731b89">[a388ff29e7]</a> Alexander Traud -- codec_resample: Increase buffer for Opus Codec with FEC.</li>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6f04531b41f7b4b09b469d9e5c6342a0215c295c">[6f04531b41]</a> Alexander Traud -- codec_resample: Increase buffer for Opus Codec.</li>
|
||||
</ul><br><h4>Category: Core/AstDB</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25400">ASTERISK-25400</a>: Hints broken when "CustomPresence" doesn't exist in AstDB<br/>Reported by: Andrew Nagy<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=966265dd704ad5cf35591f84aa3eddd8d6bc52a5">[966265dd70]</a> Ivan Poddubny -- func_presencestate: Return "not_set" when no data is set in AstDB</li>
|
||||
</ul><br><h4>Category: Core/BuildSystem</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25434">ASTERISK-25434</a>: Compiler flags not reported in 'core show settings' despite usage during compilation<br/>Reported by: Rusty Newton<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=77936f612d7418e7c8e9bd806633517a56b9cd38">[77936f612d]</a> Corey Farrell -- Fix cli display of build options.</li>
|
||||
</ul><br><h4>Category: Core/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25585">ASTERISK-25585</a>: [patch]rasterisk never hits most of main(), but it's assumed to<br/>Reported by: Walter Doekes<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=4450cf89d877efe46b5ceeadc4d7a7b85a027dc2">[4450cf89d8]</a> Walter Doekes -- main: Slight refactor of main. Improve color situation.</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25552">ASTERISK-25552</a>: hashtab: Improve NULL tolerance<br/>Reported by: Joshua Colp<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=78734aadf46795094955e6783d5e6f1223b7fa65">[78734aadf4]</a> Joshua Colp -- hashtab: Add NULL check when destroying iterator.</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25449">ASTERISK-25449</a>: main/sched: Regression introduced by 5c713fdf18f causes erroneous duplicate RTCP messages; other potential scheduling issues in chan_sip/chan_skinny<br/>Reported by: Matt Jordan<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e74110188d7e4c959d6c3ddbe40635a639b33a14">[e74110188d]</a> Steve Davies -- Further fixes to improper usage of scheduler</li>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=44efdbd2de7b8a2bc05840901dc9a1cfbbab3c4c">[44efdbd2de]</a> Matt Jordan -- res/res_rtp_asterisk: Fix assignment after ao2 decrement</li>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=60a9172d7ef2b295d953ce95adc66ab1daf8f4bc">[60a9172d7e]</a> Matt Jordan -- Fix improper usage of scheduler exposed by 5c713fdf18f</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-7803">ASTERISK-7803</a>: [patch] Update the maximum packetization values in frame.c<br/>Reported by: dea<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=811ef5ebac74c61c47d3b3c3d2b654ff86731429">[811ef5ebac]</a> Alexander Traud -- format: Update the maximum packetization time for iLBC 30.</li>
|
||||
</ul><br><h4>Category: Core/ManagerInterface</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25391">ASTERISK-25391</a>: AMI GetConfigJSON returns invalid JSON<br/>Reported by: Bojan Nemčić<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b66f1eef4106771b9edf9a3efb98ac849c1b2fc0">[b66f1eef41]</a> Ivan Poddubny -- manager: Fix GetConfigJSON returning invalid JSON</li>
|
||||
</ul><br><h4>Category: Core/PBX</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25394">ASTERISK-25394</a>: pbx: Incorrect device and presence state when changing hint details<br/>Reported by: Joshua Colp<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e909f4a78c04f201bc633f45f8e270c24b611d13">[e909f4a78c]</a> Kevin Harwell -- pbx: Deadlock between contexts container and context_merge locks</li>
|
||||
</ul><br><h4>Category: Documentation</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25373">ASTERISK-25373</a>: add documentation for CALLERID(pres) and also the CONNECTEDLINE and REDIRECTING variants<br/>Reported by: Walter Doekes<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=8fd2b60e1ab5e420ab9aadbf09092e1c9e7bd62f">[8fd2b60e1a]</a> Walter Doekes -- func_callerid: Document that CALLERID(pres) is available.</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25527">ASTERISK-25527</a>: Quirky xmldoc description wrapping<br/>Reported by: Walter Doekes<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=ebed86fb4a0e09fcd7473e2e0d13a931adbfcd3e">[ebed86fb4a]</a> Walter Doekes -- xmldoc: Improve xmldoc wrapping of 'core show ...' output.</li>
|
||||
</ul><br><h4>Category: Formats/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25537">ASTERISK-25537</a>: [patch] format-attribute module: RFC or internal defaults?<br/>Reported by: Alexander Traud<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6373ed28525f92c47c7df757bdd476bd9bee1c66">[6373ed2852]</a> Alexander Traud -- rtp_engine: Init a format-attribute module to its RFC defaults.</li>
|
||||
</ul><br><h4>Category: Functions/func_callerid</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25373">ASTERISK-25373</a>: add documentation for CALLERID(pres) and also the CONNECTEDLINE and REDIRECTING variants<br/>Reported by: Walter Doekes<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=8fd2b60e1ab5e420ab9aadbf09092e1c9e7bd62f">[8fd2b60e1a]</a> Walter Doekes -- func_callerid: Document that CALLERID(pres) is available.</li>
|
||||
</ul><br><h4>Category: Resources/res_agi</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25593">ASTERISK-25593</a>: fastagi: record file closed after sending result<br/>Reported by: Kevin Harwell<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=92f631e2f4cc616a446ac9de31ba390008915c08">[92f631e2f4]</a> Kevin Harwell -- fastagi: record file closed after sending result</li>
|
||||
</ul><br><h4>Category: Resources/res_config_pgsql</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25455">ASTERISK-25455</a>: Deadlock of PJSIP realtime over res_config_pgsql <br/>Reported by: mdu113<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=9f4892ece40d493c5c187f668fe0877e26ae6b36">[9f4892ece4]</a> mdu113 -- res_config_pgsql.c: Fix deadlock loading realtime configuration.</li>
|
||||
</ul><br><h4>Category: Resources/res_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25455">ASTERISK-25455</a>: Deadlock of PJSIP realtime over res_config_pgsql <br/>Reported by: mdu113<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=9f4892ece40d493c5c187f668fe0877e26ae6b36">[9f4892ece4]</a> mdu113 -- res_config_pgsql.c: Fix deadlock loading realtime configuration.</li>
|
||||
</ul><br><h4>Category: Resources/res_rtp_asterisk</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-24146">ASTERISK-24146</a>: [patch]No audio on WebRtc caller side when answer waiting time is more than ~7sec<br/>Reported by: Aleksei Kulakov<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=badac7c340248637740da7ff4421c9f22a7e399e">[badac7c340]</a> Eugene Voityuk -- chan_sip.c: Start ICE negotiation when response is sent or received.</li>
|
||||
</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25438">ASTERISK-25438</a>: res_rtp_asterisk: ICE role message even when ICE is not enabled<br/>Reported by: Joshua Colp<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=fa0985851aba9bc8ca234b66cd47c50e45eae61f">[fa0985851a]</a> Joshua Colp -- res_rtp_asterisk: Move "Set role" warning to be debug.</li>
|
||||
</ul><br><h3>Improvement</h3><h4>Category: Core/BuildSystem</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-24718">ASTERISK-24718</a>: [patch]Add inital support of "sanitize" to configure<br/>Reported by: Badalian Vyacheslav<ul>
|
||||
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a0bb7b50ae25fb2c6c222392214e761c0c5b1ec4">[a0bb7b50ae]</a> Ivan Poddubny -- Build: Add menuselect options for using compiler sanitizers</li>
|
||||
</ul><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><p>This is a list of all changes that went into this release that did not reference a JIRA issue.</p><table width="100%" border="1">
|
||||
<tr><th>Revision</th><th>Author</th><th>Summary</th></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=8720b171cee19cd5179232764d5066e26382fe81">8720b171ce</a></td><td>Kevin Harwell</td><td>Release summaries: Remove previous versions</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=731f22c9e89a0d27de0bb9d78ac06b9b248c6df9">731f22c9e8</a></td><td>Kevin Harwell</td><td>.version: Update for 11.21.0</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=2d8ed745d8f3a5161064a070498213b34242dac5">2d8ed745d8</a></td><td>Kevin Harwell</td><td>.lastclean: Update for 11.21.0</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b4eef8b8d477047991524c661b73a54efe8fa8ec">b4eef8b8d4</a></td><td>Kevin Harwell</td><td>ChangeLog: Updated for 11.21.0-rc3</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c09fbe124888e65977e39cccab16fddcfbb19818">c09fbe1248</a></td><td>Kevin Harwell</td><td>Release summaries: Add summaries for 11.21.0-rc3</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a2a4b9386470c01f582e24cf3ee0d9d30fd3c30b">a2a4b93864</a></td><td>Kevin Harwell</td><td>Release summaries: Remove previous versions</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=0f399a5a5fd79bade2b08973011203958102dba0">0f399a5a5f</a></td><td>Kevin Harwell</td><td>.version: Update for 11.21.0-rc3</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=1d6ac3f797c9972e360a58e14dbadca86476aa57">1d6ac3f797</a></td><td>Kevin Harwell</td><td>.lastclean: Update for 11.21.0-rc3</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a2b5d4fa545dcd95535b713f5d9b906fa13c28d5">a2b5d4fa54</a></td><td>Kevin Harwell</td><td>ChangeLog: Updated for 11.21.0-rc2</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=45f8ba7cb33f310527d18898fe5cb21685954b49">45f8ba7cb3</a></td><td>Kevin Harwell</td><td>Release summaries: Add summaries for 11.21.0-rc2</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=aaff9871f3f383ee6cafcbc1da5632737a7d85ef">aaff9871f3</a></td><td>Kevin Harwell</td><td>Release summaries: Remove previous versions</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=175c1afbb59a013f582ffea9cfd6b26fd0b249e5">175c1afbb5</a></td><td>Kevin Harwell</td><td>.version: Update for 11.21.0-rc2</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=3183add62b463848f8fc222aa78af469f8f9136f">3183add62b</a></td><td>Kevin Harwell</td><td>.lastclean: Update for 11.21.0-rc2</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a07795c6975b9d35ab9e1ac931748765acd2e9c3">a07795c697</a></td><td>Kevin Harwell</td><td>ChangeLog: Updated for 11.21.0-rc1</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=2108015d2f3e325d69fa04b15257d5c3fc87a8e5">2108015d2f</a></td><td>Kevin Harwell</td><td>Release summaries: Add summaries for 11.21.0-rc1</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a2e60af7ff88ec20cc6d6fcd045ed8dc7b351f30">a2e60af7ff</a></td><td>Kevin Harwell</td><td>.version: Update for 11.21.0-rc1</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=58966343b3a885bc47990471790a8623a7f815fa">58966343b3</a></td><td>Kevin Harwell</td><td>.lastclean: Update for 11.21.0-rc1</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=d4e349129345d35c33dc3312f6b58497dde39a28">d4e3491293</a></td><td>Matt Jordan</td><td>main/utils: Don't emit an ERROR message if the read end of a pipe closes</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b59b0bb509f1a7af741f69b238e849d7741f8bca">b59b0bb509</a></td><td>Joshua Colp</td><td>build: Fix building with newer GCC.</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=33e214e025b6314278679188f43c733125091b57">33e214e025</a></td><td>Walter Doekes</td><td>docs: Fix a few typo's in app docs (more then, resourse).</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a702ef503fa6defdf083370cf344e47fcf55e91f">a702ef503f</a></td><td>Richard Mudgett</td><td>config.c: Fix off-nominal memory leak.</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=164e2860375a869f9a666977379cf63e4ca94391">164e286037</a></td><td>Richard Mudgett</td><td>config.c: Fix potential memory corruption after [section](+).</td></tr>
|
||||
<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6803444ac14bcd7f70bb028e9e319785a5335a79">6803444ac1</a></td><td>Richard Mudgett</td><td>sched.c: Add warning about negative time interval request.</td></tr>
|
||||
</table><hr><a name="diffstat"><h2 align="center">Diffstat Results</h2></a><center><a href="#top">[Back to Top]</a></center><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>asterisk-11.20.0-summary.html | 126 -------
|
||||
asterisk-11.20.0-summary.txt | 399 ------------------------
|
||||
b/.version | 2
|
||||
b/CHANGES | 16
|
||||
b/ChangeLog | 629 ++++++++++++++++++++++++++++++++-------
|
||||
b/Makefile | 2
|
||||
b/Makefile.rules | 20 +
|
||||
b/apps/app_chanisavail.c | 6
|
||||
b/apps/app_dial.c | 10
|
||||
b/apps/app_meetme.c | 3
|
||||
b/apps/app_page.c | 2
|
||||
b/build_tools/cflags.xml | 26 +
|
||||
b/build_tools/make_version_c | 25 +
|
||||
b/channels/chan_dahdi.c | 5
|
||||
b/channels/chan_iax2.c | 21 -
|
||||
b/channels/chan_sip.c | 94 ++++-
|
||||
b/channels/chan_skinny.c | 10
|
||||
b/channels/sig_pri.c | 2
|
||||
b/channels/sip/config_parser.c | 9
|
||||
b/channels/sip/reqresp_parser.c | 2
|
||||
b/codecs/codec_resample.c | 8
|
||||
b/funcs/func_callerid.c | 39 +-
|
||||
b/funcs/func_presencestate.c | 4
|
||||
b/include/asterisk/ast_version.h | 3
|
||||
b/include/asterisk/event_defs.h | 14
|
||||
b/include/asterisk/term.h | 2
|
||||
b/main/asterisk.c | 126 ++++---
|
||||
b/main/audiohook.c | 12
|
||||
b/main/channel.c | 1
|
||||
b/main/config.c | 41 +-
|
||||
b/main/features.c | 4
|
||||
b/main/format.c | 2
|
||||
b/main/hashtab.c | 2
|
||||
b/main/manager.c | 4
|
||||
b/main/pbx.c | 532 +++++++++++++++-----------------
|
||||
b/main/rtp_engine.c | 2
|
||||
b/main/sched.c | 22 +
|
||||
b/main/term.c | 21 -
|
||||
b/main/translate.c | 10
|
||||
b/main/utils.c | 8
|
||||
b/main/xmldoc.c | 150 +--------
|
||||
b/pbx/pbx_dundi.c | 1
|
||||
b/res/res_agi.c | 6
|
||||
b/res/res_config_pgsql.c | 8
|
||||
b/res/res_rtp_asterisk.c | 34 +-
|
||||
45 files changed, 1242 insertions(+), 1223 deletions(-)</pre><br></html>
|
458
asterisk-11.21.0-summary.txt
Normal file
458
asterisk-11.21.0-summary.txt
Normal file
@@ -0,0 +1,458 @@
|
||||
Release Summary
|
||||
|
||||
asterisk-11.21.0
|
||||
|
||||
Date: 2016-01-15
|
||||
|
||||
<asteriskteam@digium.com>
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Table of Contents
|
||||
|
||||
1. Summary
|
||||
2. Contributors
|
||||
3. Closed Issues
|
||||
4. Other Changes
|
||||
5. Diffstat
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Summary
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This release is a point release of an existing major version. The changes
|
||||
included were made to address problems that have been identified in this
|
||||
release series, or are minor, backwards compatible new features or
|
||||
improvements. Users should be able to safely upgrade to this version if
|
||||
this release series is already in use. Users considering upgrading from a
|
||||
previous version 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-11.20.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 affected by commits that went into
|
||||
this release.
|
||||
|
||||
Coders Testers Reporters
|
||||
14 Kevin Harwell 1 gtjoseph 4 Alexander Traud
|
||||
7 Richard Mudgett 1 starting asterisk -c 3 Walter Doekes
|
||||
5 Kevin Harwell until the colors stopped 3 Joshua Colp
|
||||
5 Alexander Traud 3 Michael Keuter
|
||||
4 Walter Doekes 3 Matt Jordan
|
||||
4 Joshua Colp 1 Rusty Newton
|
||||
3 Matt Jordan 1 ffs
|
||||
3 Ivan Poddubny 1 Andrew Nagy
|
||||
2 Corey Farrell 1 Ben Langfeld
|
||||
1 Filip Jenicek 1 Kevin Harwell
|
||||
1 Eugene Voityuk 1 Krzysztof Trempala
|
||||
1 Steve Davies 1 George Joseph
|
||||
1 Olle Johansson (License 1 mdu113
|
||||
5267) 1 DudA!s JA^3zsef
|
||||
1 Florian Sauerteig 1 Hiroaki Komatsu
|
||||
1 Jonathan Rose 1 Ben Langfeld
|
||||
1 gtjoseph 1 Rusty Newton
|
||||
1 server-pandora 1 Corey Farrell
|
||||
1 mdu113 1 Bojan NemA:*iA:*
|
||||
1 Krzysztof Trempala
|
||||
1 Badalian Vyacheslav
|
||||
1 Olle Johansson
|
||||
1 Sean Pimental
|
||||
1 Aleksei Kulakov
|
||||
1 gtjoseph
|
||||
1 Badalian Vyacheslav
|
||||
1 Olle Johansson
|
||||
1 Andrew Nagy
|
||||
1 Filip Jenicek
|
||||
1 Dade Brandon
|
||||
1 Bojan NemA:*iA:*
|
||||
1 Richard Mudgett
|
||||
1 dea
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
Bug
|
||||
|
||||
Category: Addons/General
|
||||
|
||||
ASTERISK-25640: pbx: Deadlock on features reload and state change hint.
|
||||
Reported by: Krzysztof Trempala
|
||||
* [e909f4a78c] Kevin Harwell -- pbx: Deadlock between contexts container
|
||||
and context_merge locks
|
||||
|
||||
Category: Applications/app_meetme
|
||||
|
||||
ASTERISK-25569: app_meetme: Audio quality issues
|
||||
Reported by: Corey Farrell
|
||||
* [fa7329b72d] Corey Farrell -- app_meetme: Set default value for
|
||||
audio_buffers.
|
||||
|
||||
Category: Channels/chan_dahdi
|
||||
|
||||
ASTERISK-25494: build: GCC 5.1.x catches some new const, array bounds and
|
||||
missing paren issues
|
||||
Reported by: George Joseph
|
||||
* [992879aa43] gtjoseph -- build: GCC 5.1.x catches some new const,
|
||||
array bounds and missing paren issues
|
||||
|
||||
Category: Channels/chan_pjsip
|
||||
|
||||
ASTERISK-25455: Deadlock of PJSIP realtime over res_config_pgsql
|
||||
Reported by: mdu113
|
||||
* [9f4892ece4] mdu113 -- res_config_pgsql.c: Fix deadlock loading
|
||||
realtime configuration.
|
||||
|
||||
Category: Channels/chan_sip/General
|
||||
|
||||
ASTERISK-25364: [patch]Issue a TCP connection(kernel) and thread of
|
||||
asterisk is not released
|
||||
Reported by: Hiroaki Komatsu
|
||||
* [e1d08a39c5] Jonathan Rose -- chan_sip: Add TCP/TLS keepalive to
|
||||
TCP/TLS server
|
||||
ASTERISK-25610: Asterisk crash during "sip reload"
|
||||
Reported by: DudA!s JA^3zsef
|
||||
* [47118fb947] Richard Mudgett -- chan_sip: Fix crash involving the
|
||||
bogus peer during sip reload.
|
||||
ASTERISK-25476: chan_sip loses registrations after a while
|
||||
Reported by: Michael Keuter
|
||||
* [bd4aee4b7b] Richard Mudgett -- sched.c: Make not return a sched id of
|
||||
0.
|
||||
* [394b8a40c1] Richard Mudgett -- Audit improper usage of scheduler
|
||||
exposed by 5c713fdf18f.
|
||||
* [e74110188d] Steve Davies -- Further fixes to improper usage of
|
||||
scheduler
|
||||
ASTERISK-25494: build: GCC 5.1.x catches some new const, array bounds and
|
||||
missing paren issues
|
||||
Reported by: George Joseph
|
||||
* [992879aa43] gtjoseph -- build: GCC 5.1.x catches some new const,
|
||||
array bounds and missing paren issues
|
||||
|
||||
Category: Channels/chan_sip/IPv6
|
||||
|
||||
ASTERISK-25443: [patch]IPv6 - Potential issue in via header parsing
|
||||
Reported by: ffs
|
||||
* [9354c1a64f] Florian Sauerteig -- chan_sip: Fix port parsing for IPv6
|
||||
addresses in SIP Via headers.
|
||||
|
||||
Category: Channels/chan_sip/Interoperability
|
||||
|
||||
ASTERISK-25135: [patch]RTP Timeout hangup cause code missing
|
||||
Reported by: Olle Johansson
|
||||
* [b3101fb8df] Olle Johansson -- channels/chan_sip: Set cause code to 44
|
||||
on RTP timeout
|
||||
|
||||
Category: Channels/chan_sip/T.38
|
||||
|
||||
ASTERISK-25609: [patch]Asterisk may crash when calling
|
||||
ast_channel_get_t38_state(c)
|
||||
Reported by: Filip Jenicek
|
||||
* [62574fb9dc] Filip Jenicek -- chan_sip: Check sip_pvt pointer in
|
||||
ast_channel_get_t38_state(c)
|
||||
|
||||
Category: Channels/chan_sip/WebSocket
|
||||
|
||||
ASTERISK-24146: [patch]No audio on WebRtc caller side when answer waiting
|
||||
time is more than ~7sec
|
||||
Reported by: Aleksei Kulakov
|
||||
* [badac7c340] Eugene Voityuk -- chan_sip.c: Start ICE negotiation when
|
||||
response is sent or received.
|
||||
|
||||
Category: Channels/chan_skinny
|
||||
|
||||
ASTERISK-25494: build: GCC 5.1.x catches some new const, array bounds and
|
||||
missing paren issues
|
||||
Reported by: George Joseph
|
||||
* [992879aa43] gtjoseph -- build: GCC 5.1.x catches some new const,
|
||||
array bounds and missing paren issues
|
||||
|
||||
Category: Codecs/General
|
||||
|
||||
ASTERISK-25616: Warning with a Codec Module which supports PLC with FEC
|
||||
Reported by: Alexander Traud
|
||||
* [ac8e285dfd] Alexander Traud -- translate: Avoid a warning message
|
||||
when doing FEC within Opus Codec.
|
||||
ASTERISK-25498: Asterisk crashes when negotiating g729 without that module
|
||||
installed
|
||||
Reported by: Ben Langfeld
|
||||
* [0a8fe8de11] Joshua Colp -- Fix crash in audiohook translate to slin
|
||||
|
||||
Category: Codecs/codec_resample
|
||||
|
||||
ASTERISK-25599: [patch] SLIN Resampling Codec only 80 msec
|
||||
Reported by: Alexander Traud
|
||||
* [a388ff29e7] Alexander Traud -- codec_resample: Increase buffer for
|
||||
Opus Codec with FEC.
|
||||
* [6f04531b41] Alexander Traud -- codec_resample: Increase buffer for
|
||||
Opus Codec.
|
||||
|
||||
Category: Core/AstDB
|
||||
|
||||
ASTERISK-25400: Hints broken when "CustomPresence" doesn't exist in AstDB
|
||||
Reported by: Andrew Nagy
|
||||
* [966265dd70] Ivan Poddubny -- func_presencestate: Return "not_set"
|
||||
when no data is set in AstDB
|
||||
|
||||
Category: Core/BuildSystem
|
||||
|
||||
ASTERISK-25434: Compiler flags not reported in 'core show settings'
|
||||
despite usage during compilation
|
||||
Reported by: Rusty Newton
|
||||
* [77936f612d] Corey Farrell -- Fix cli display of build options.
|
||||
|
||||
Category: Core/General
|
||||
|
||||
ASTERISK-25585: [patch]rasterisk never hits most of main(), but it's
|
||||
assumed to
|
||||
Reported by: Walter Doekes
|
||||
* [4450cf89d8] Walter Doekes -- main: Slight refactor of main. Improve
|
||||
color situation.
|
||||
ASTERISK-25552: hashtab: Improve NULL tolerance
|
||||
Reported by: Joshua Colp
|
||||
* [78734aadf4] Joshua Colp -- hashtab: Add NULL check when destroying
|
||||
iterator.
|
||||
ASTERISK-25449: main/sched: Regression introduced by 5c713fdf18f causes
|
||||
erroneous duplicate RTCP messages; other potential scheduling issues in
|
||||
chan_sip/chan_skinny
|
||||
Reported by: Matt Jordan
|
||||
* [e74110188d] Steve Davies -- Further fixes to improper usage of
|
||||
scheduler
|
||||
* [44efdbd2de] Matt Jordan -- res/res_rtp_asterisk: Fix assignment after
|
||||
ao2 decrement
|
||||
* [60a9172d7e] Matt Jordan -- Fix improper usage of scheduler exposed by
|
||||
5c713fdf18f
|
||||
ASTERISK-7803: [patch] Update the maximum packetization values in frame.c
|
||||
Reported by: dea
|
||||
* [811ef5ebac] Alexander Traud -- format: Update the maximum
|
||||
packetization time for iLBC 30.
|
||||
|
||||
Category: Core/ManagerInterface
|
||||
|
||||
ASTERISK-25391: AMI GetConfigJSON returns invalid JSON
|
||||
Reported by: Bojan NemA:*iA:*
|
||||
* [b66f1eef41] Ivan Poddubny -- manager: Fix GetConfigJSON returning
|
||||
invalid JSON
|
||||
|
||||
Category: Core/PBX
|
||||
|
||||
ASTERISK-25394: pbx: Incorrect device and presence state when changing
|
||||
hint details
|
||||
Reported by: Joshua Colp
|
||||
* [e909f4a78c] Kevin Harwell -- pbx: Deadlock between contexts container
|
||||
and context_merge locks
|
||||
|
||||
Category: Documentation
|
||||
|
||||
ASTERISK-25373: add documentation for CALLERID(pres) and also the
|
||||
CONNECTEDLINE and REDIRECTING variants
|
||||
Reported by: Walter Doekes
|
||||
* [8fd2b60e1a] Walter Doekes -- func_callerid: Document that
|
||||
CALLERID(pres) is available.
|
||||
ASTERISK-25527: Quirky xmldoc description wrapping
|
||||
Reported by: Walter Doekes
|
||||
* [ebed86fb4a] Walter Doekes -- xmldoc: Improve xmldoc wrapping of 'core
|
||||
show ...' output.
|
||||
|
||||
Category: Formats/General
|
||||
|
||||
ASTERISK-25537: [patch] format-attribute module: RFC or internal defaults?
|
||||
Reported by: Alexander Traud
|
||||
* [6373ed2852] Alexander Traud -- rtp_engine: Init a format-attribute
|
||||
module to its RFC defaults.
|
||||
|
||||
Category: Functions/func_callerid
|
||||
|
||||
ASTERISK-25373: add documentation for CALLERID(pres) and also the
|
||||
CONNECTEDLINE and REDIRECTING variants
|
||||
Reported by: Walter Doekes
|
||||
* [8fd2b60e1a] Walter Doekes -- func_callerid: Document that
|
||||
CALLERID(pres) is available.
|
||||
|
||||
Category: Resources/res_agi
|
||||
|
||||
ASTERISK-25593: fastagi: record file closed after sending result
|
||||
Reported by: Kevin Harwell
|
||||
* [92f631e2f4] Kevin Harwell -- fastagi: record file closed after
|
||||
sending result
|
||||
|
||||
Category: Resources/res_config_pgsql
|
||||
|
||||
ASTERISK-25455: Deadlock of PJSIP realtime over res_config_pgsql
|
||||
Reported by: mdu113
|
||||
* [9f4892ece4] mdu113 -- res_config_pgsql.c: Fix deadlock loading
|
||||
realtime configuration.
|
||||
|
||||
Category: Resources/res_pjsip
|
||||
|
||||
ASTERISK-25455: Deadlock of PJSIP realtime over res_config_pgsql
|
||||
Reported by: mdu113
|
||||
* [9f4892ece4] mdu113 -- res_config_pgsql.c: Fix deadlock loading
|
||||
realtime configuration.
|
||||
|
||||
Category: Resources/res_rtp_asterisk
|
||||
|
||||
ASTERISK-24146: [patch]No audio on WebRtc caller side when answer waiting
|
||||
time is more than ~7sec
|
||||
Reported by: Aleksei Kulakov
|
||||
* [badac7c340] Eugene Voityuk -- chan_sip.c: Start ICE negotiation when
|
||||
response is sent or received.
|
||||
ASTERISK-25438: res_rtp_asterisk: ICE role message even when ICE is not
|
||||
enabled
|
||||
Reported by: Joshua Colp
|
||||
* [fa0985851a] Joshua Colp -- res_rtp_asterisk: Move "Set role" warning
|
||||
to be debug.
|
||||
|
||||
Improvement
|
||||
|
||||
Category: Core/BuildSystem
|
||||
|
||||
ASTERISK-24718: [patch]Add inital support of "sanitize" to configure
|
||||
Reported by: Badalian Vyacheslav
|
||||
* [a0bb7b50ae] Ivan Poddubny -- Build: Add menuselect options for using
|
||||
compiler sanitizers
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Commits Not Associated with an Issue
|
||||
|
||||
[Back to Top]
|
||||
|
||||
This is a list of all changes that went into this release that did not
|
||||
reference a JIRA issue.
|
||||
|
||||
+------------------------------------------------------------------------+
|
||||
| Revision | Author | Summary |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 8720b171ce | Kevin Harwell | Release summaries: Remove previous |
|
||||
| | | versions |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 731f22c9e8 | Kevin Harwell | .version: Update for 11.21.0 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 2d8ed745d8 | Kevin Harwell | .lastclean: Update for 11.21.0 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| b4eef8b8d4 | Kevin Harwell | ChangeLog: Updated for 11.21.0-rc3 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| c09fbe1248 | Kevin Harwell | Release summaries: Add summaries for |
|
||||
| | | 11.21.0-rc3 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| a2a4b93864 | Kevin Harwell | Release summaries: Remove previous |
|
||||
| | | versions |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 0f399a5a5f | Kevin Harwell | .version: Update for 11.21.0-rc3 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 1d6ac3f797 | Kevin Harwell | .lastclean: Update for 11.21.0-rc3 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| a2b5d4fa54 | Kevin Harwell | ChangeLog: Updated for 11.21.0-rc2 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 45f8ba7cb3 | Kevin Harwell | Release summaries: Add summaries for |
|
||||
| | | 11.21.0-rc2 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| aaff9871f3 | Kevin Harwell | Release summaries: Remove previous |
|
||||
| | | versions |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 175c1afbb5 | Kevin Harwell | .version: Update for 11.21.0-rc2 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 3183add62b | Kevin Harwell | .lastclean: Update for 11.21.0-rc2 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| a07795c697 | Kevin Harwell | ChangeLog: Updated for 11.21.0-rc1 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 2108015d2f | Kevin Harwell | Release summaries: Add summaries for |
|
||||
| | | 11.21.0-rc1 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| a2e60af7ff | Kevin Harwell | .version: Update for 11.21.0-rc1 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 58966343b3 | Kevin Harwell | .lastclean: Update for 11.21.0-rc1 |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| d4e3491293 | Matt Jordan | main/utils: Don't emit an ERROR message |
|
||||
| | | if the read end of a pipe closes |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| b59b0bb509 | Joshua Colp | build: Fix building with newer GCC. |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 33e214e025 | Walter Doekes | docs: Fix a few typo's in app docs |
|
||||
| | | (more then, resourse). |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| a702ef503f | Richard Mudgett | config.c: Fix off-nominal memory leak. |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 164e286037 | Richard Mudgett | config.c: Fix potential memory |
|
||||
| | | corruption after [section](+). |
|
||||
|------------+-----------------+-----------------------------------------|
|
||||
| 6803444ac1 | Richard Mudgett | sched.c: Add warning about negative |
|
||||
| | | time interval request. |
|
||||
+------------------------------------------------------------------------+
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
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.
|
||||
|
||||
asterisk-11.20.0-summary.html | 126 -------
|
||||
asterisk-11.20.0-summary.txt | 399 ------------------------
|
||||
b/.version | 2
|
||||
b/CHANGES | 16
|
||||
b/ChangeLog | 629 ++++++++++++++++++++++++++++++++-------
|
||||
b/Makefile | 2
|
||||
b/Makefile.rules | 20 +
|
||||
b/apps/app_chanisavail.c | 6
|
||||
b/apps/app_dial.c | 10
|
||||
b/apps/app_meetme.c | 3
|
||||
b/apps/app_page.c | 2
|
||||
b/build_tools/cflags.xml | 26 +
|
||||
b/build_tools/make_version_c | 25 +
|
||||
b/channels/chan_dahdi.c | 5
|
||||
b/channels/chan_iax2.c | 21 -
|
||||
b/channels/chan_sip.c | 94 ++++-
|
||||
b/channels/chan_skinny.c | 10
|
||||
b/channels/sig_pri.c | 2
|
||||
b/channels/sip/config_parser.c | 9
|
||||
b/channels/sip/reqresp_parser.c | 2
|
||||
b/codecs/codec_resample.c | 8
|
||||
b/funcs/func_callerid.c | 39 +-
|
||||
b/funcs/func_presencestate.c | 4
|
||||
b/include/asterisk/ast_version.h | 3
|
||||
b/include/asterisk/event_defs.h | 14
|
||||
b/include/asterisk/term.h | 2
|
||||
b/main/asterisk.c | 126 ++++---
|
||||
b/main/audiohook.c | 12
|
||||
b/main/channel.c | 1
|
||||
b/main/config.c | 41 +-
|
||||
b/main/features.c | 4
|
||||
b/main/format.c | 2
|
||||
b/main/hashtab.c | 2
|
||||
b/main/manager.c | 4
|
||||
b/main/pbx.c | 532 +++++++++++++++-----------------
|
||||
b/main/rtp_engine.c | 2
|
||||
b/main/sched.c | 22 +
|
||||
b/main/term.c | 21 -
|
||||
b/main/translate.c | 10
|
||||
b/main/utils.c | 8
|
||||
b/main/xmldoc.c | 150 +--------
|
||||
b/pbx/pbx_dundi.c | 1
|
||||
b/res/res_agi.c | 6
|
||||
b/res/res_config_pgsql.c | 8
|
||||
b/res/res_rtp_asterisk.c | 34 +-
|
||||
45 files changed, 1242 insertions(+), 1223 deletions(-)
|
@@ -60,8 +60,10 @@ enum ast_event_type {
|
||||
AST_EVENT_ACL_CHANGE = 0x0b,
|
||||
/*! Send out a ping for debugging distributed events */
|
||||
AST_EVENT_PING = 0x0c,
|
||||
/*! Used to alert listeners when a hint has changed. */
|
||||
AST_EVENT_HINT_CHANGE = 0x0d,
|
||||
/*! Number of event types. This should be the last event type + 1 */
|
||||
AST_EVENT_TOTAL = 0x0d,
|
||||
AST_EVENT_TOTAL = 0x0e,
|
||||
};
|
||||
|
||||
/*! \brief Event Information Element types */
|
||||
@@ -304,8 +306,16 @@ enum ast_event_ie_type {
|
||||
* Payload type: UINT
|
||||
*/
|
||||
AST_EVENT_IE_CACHABLE = 0x003d,
|
||||
|
||||
/*!
|
||||
* \brief Event hint change payload
|
||||
* Used by: AST_EVENT_HINT_CHANGE
|
||||
* Payload type: RAW
|
||||
*/
|
||||
AST_EVENT_IE_HINT_CHANGE_PAYLOAD = 0x003e,
|
||||
|
||||
/*! \brief Must be the last IE value +1 */
|
||||
AST_EVENT_IE_TOTAL = 0x003e,
|
||||
AST_EVENT_IE_TOTAL = 0x003f,
|
||||
};
|
||||
|
||||
/*!
|
||||
|
584
main/pbx.c
584
main/pbx.c
@@ -1377,6 +1377,8 @@ static char *overrideswitch = NULL;
|
||||
static struct ast_event_sub *device_state_sub;
|
||||
/*! \brief Subscription for presence state change events */
|
||||
static struct ast_event_sub *presence_state_sub;
|
||||
/*! \brief Subscription for hint change events */
|
||||
static struct ast_event_sub *hint_change_sub;
|
||||
|
||||
AST_MUTEX_DEFINE_STATIC(maxcalllock);
|
||||
static int countcalls;
|
||||
@@ -5300,15 +5302,113 @@ static int execute_state_callback(ast_state_cb_type cb,
|
||||
return res;
|
||||
}
|
||||
|
||||
static int handle_presencechange(void *datap)
|
||||
static void presence_state_notify_callbacks(enum ast_event_type type, struct ast_hint *hint,
|
||||
struct ast_str **hint_app, struct presencechange *pc)
|
||||
{
|
||||
struct ast_hint *hint;
|
||||
struct ast_str *hint_app = NULL;
|
||||
struct presencechange *pc = datap;
|
||||
struct ao2_iterator i;
|
||||
struct ao2_iterator cb_iter;
|
||||
struct ast_state_cb *state_cb;
|
||||
char context_name[AST_MAX_CONTEXT];
|
||||
char exten_name[AST_MAX_EXTENSION];
|
||||
|
||||
ao2_lock(hint);
|
||||
|
||||
if (!hint->exten) {
|
||||
/* The extension has already been destroyed */
|
||||
ao2_unlock(hint);
|
||||
return;
|
||||
}
|
||||
|
||||
if (type != AST_EVENT_HINT_CHANGE) {
|
||||
const char *app;
|
||||
char *parse;
|
||||
|
||||
/* Does this hint monitor the device that changed state? */
|
||||
app = ast_get_extension_app(hint->exten);
|
||||
if (ast_strlen_zero(app)) {
|
||||
/* The hint does not monitor presence at all. */
|
||||
ao2_unlock(hint);
|
||||
return;
|
||||
}
|
||||
|
||||
ast_str_set(hint_app, 0, "%s", app);
|
||||
parse = parse_hint_presence(*hint_app);
|
||||
if (ast_strlen_zero(parse)) {
|
||||
ao2_unlock(hint);
|
||||
return;
|
||||
}
|
||||
if (strcasecmp(parse, pc->provider)) {
|
||||
/* The hint does not monitor the presence provider. */
|
||||
ao2_unlock(hint);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Save off strings in case the hint extension gets destroyed
|
||||
* while we are notifying the watchers.
|
||||
*/
|
||||
ast_copy_string(context_name,
|
||||
ast_get_context_name(ast_get_extension_context(hint->exten)),
|
||||
sizeof(context_name));
|
||||
ast_copy_string(exten_name, ast_get_extension_name(hint->exten),
|
||||
sizeof(exten_name));
|
||||
ast_str_set(hint_app, 0, "%s", ast_get_extension_app(hint->exten));
|
||||
|
||||
/* Check to see if update is necessary */
|
||||
if ((hint->last_presence_state == pc->state) &&
|
||||
((hint->last_presence_subtype && pc->subtype &&
|
||||
!strcmp(hint->last_presence_subtype, pc->subtype)) ||
|
||||
(!hint->last_presence_subtype && !pc->subtype)) &&
|
||||
((hint->last_presence_message && pc->message &&
|
||||
!strcmp(hint->last_presence_message, pc->message)) ||
|
||||
(!hint->last_presence_message && !pc->message))) {
|
||||
/* this update is the same as the last, do nothing */
|
||||
ao2_unlock(hint);
|
||||
return;
|
||||
}
|
||||
|
||||
/* update new values */
|
||||
ast_free(hint->last_presence_subtype);
|
||||
ast_free(hint->last_presence_message);
|
||||
hint->last_presence_state = pc->state;
|
||||
hint->last_presence_subtype = pc->subtype ? ast_strdup(pc->subtype) : NULL;
|
||||
hint->last_presence_message = pc->message ? ast_strdup(pc->message) : NULL;
|
||||
|
||||
ao2_unlock(hint);
|
||||
|
||||
/* For general callbacks */
|
||||
cb_iter = ao2_iterator_init(statecbs, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_PRESENCE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
/* For extension callbacks */
|
||||
cb_iter = ao2_iterator_init(hint->callbacks, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_PRESENCE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
}
|
||||
|
||||
static int handle_presencechange(void *datap)
|
||||
{
|
||||
struct presencechange *pc = datap;
|
||||
struct ast_hint *hint;
|
||||
struct ast_str *hint_app = NULL;
|
||||
struct ao2_iterator i;
|
||||
int res = -1;
|
||||
|
||||
hint_app = ast_str_create(1024);
|
||||
@@ -5319,93 +5419,8 @@ static int handle_presencechange(void *datap)
|
||||
ast_mutex_lock(&context_merge_lock);/* Hold off ast_merge_contexts_and_delete */
|
||||
i = ao2_iterator_init(hints, 0);
|
||||
for (; (hint = ao2_iterator_next(&i)); ao2_ref(hint, -1)) {
|
||||
struct ast_state_cb *state_cb;
|
||||
const char *app;
|
||||
char *parse;
|
||||
|
||||
ao2_lock(hint);
|
||||
|
||||
if (!hint->exten) {
|
||||
/* The extension has already been destroyed */
|
||||
ao2_unlock(hint);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Does this hint monitor the device that changed state? */
|
||||
app = ast_get_extension_app(hint->exten);
|
||||
if (ast_strlen_zero(app)) {
|
||||
/* The hint does not monitor presence at all. */
|
||||
ao2_unlock(hint);
|
||||
continue;
|
||||
}
|
||||
|
||||
ast_str_set(&hint_app, 0, "%s", app);
|
||||
parse = parse_hint_presence(hint_app);
|
||||
if (ast_strlen_zero(parse)) {
|
||||
ao2_unlock(hint);
|
||||
continue;
|
||||
}
|
||||
if (strcasecmp(parse, pc->provider)) {
|
||||
/* The hint does not monitor the presence provider. */
|
||||
ao2_unlock(hint);
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Save off strings in case the hint extension gets destroyed
|
||||
* while we are notifying the watchers.
|
||||
*/
|
||||
ast_copy_string(context_name,
|
||||
ast_get_context_name(ast_get_extension_context(hint->exten)),
|
||||
sizeof(context_name));
|
||||
ast_copy_string(exten_name, ast_get_extension_name(hint->exten),
|
||||
sizeof(exten_name));
|
||||
ast_str_set(&hint_app, 0, "%s", ast_get_extension_app(hint->exten));
|
||||
|
||||
/* Check to see if update is necessary */
|
||||
if ((hint->last_presence_state == pc->state) &&
|
||||
((hint->last_presence_subtype && pc->subtype && !strcmp(hint->last_presence_subtype, pc->subtype)) || (!hint->last_presence_subtype && !pc->subtype)) &&
|
||||
((hint->last_presence_message && pc->message && !strcmp(hint->last_presence_message, pc->message)) || (!hint->last_presence_message && !pc->message))) {
|
||||
|
||||
/* this update is the same as the last, do nothing */
|
||||
ao2_unlock(hint);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* update new values */
|
||||
ast_free(hint->last_presence_subtype);
|
||||
ast_free(hint->last_presence_message);
|
||||
hint->last_presence_state = pc->state;
|
||||
hint->last_presence_subtype = pc->subtype ? ast_strdup(pc->subtype) : NULL;
|
||||
hint->last_presence_message = pc->message ? ast_strdup(pc->message) : NULL;
|
||||
|
||||
ao2_unlock(hint);
|
||||
|
||||
/* For general callbacks */
|
||||
cb_iter = ao2_iterator_init(statecbs, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_PRESENCE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
/* For extension callbacks */
|
||||
cb_iter = ao2_iterator_init(hint->callbacks, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_PRESENCE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
presence_state_notify_callbacks(
|
||||
AST_EVENT_PRESENCE_STATE, hint, &hint_app, pc);
|
||||
}
|
||||
ao2_iterator_destroy(&i);
|
||||
ast_mutex_unlock(&context_merge_lock);
|
||||
@@ -5500,17 +5515,102 @@ static void get_device_state_causing_channels(struct ao2_container *c)
|
||||
ao2_iterator_destroy(&iter);
|
||||
}
|
||||
|
||||
static void device_state_notify_callbacks(struct ast_hint *hint, struct ast_str **hint_app)
|
||||
{
|
||||
struct ao2_iterator cb_iter;
|
||||
struct ast_state_cb *state_cb;
|
||||
int state, same_state;
|
||||
struct ao2_container *device_state_info;
|
||||
int first_extended_cb_call = 1;
|
||||
char context_name[AST_MAX_CONTEXT];
|
||||
char exten_name[AST_MAX_EXTENSION];
|
||||
|
||||
ao2_lock(hint);
|
||||
if (!hint->exten) {
|
||||
/* The extension has already been destroyed */
|
||||
ao2_unlock(hint);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Save off strings in case the hint extension gets destroyed
|
||||
* while we are notifying the watchers.
|
||||
*/
|
||||
ast_copy_string(context_name,
|
||||
ast_get_context_name(ast_get_extension_context(hint->exten)),
|
||||
sizeof(context_name));
|
||||
ast_copy_string(exten_name, ast_get_extension_name(hint->exten),
|
||||
sizeof(exten_name));
|
||||
ast_str_set(hint_app, 0, "%s", ast_get_extension_app(hint->exten));
|
||||
ao2_unlock(hint);
|
||||
|
||||
/*
|
||||
* Get device state for this hint.
|
||||
*
|
||||
* NOTE: We cannot hold any locks while determining the hint
|
||||
* device state or notifying the watchers without causing a
|
||||
* deadlock. (conlock, hints, and hint)
|
||||
*/
|
||||
/* Make a container so state3 can fill it if we wish.
|
||||
* If that failed we simply do not provide the extended state info.
|
||||
*/
|
||||
device_state_info = alloc_device_state_info();
|
||||
|
||||
state = ast_extension_state3(*hint_app, device_state_info);
|
||||
if ((same_state = state == hint->laststate) && (~state & AST_EXTENSION_RINGING)) {
|
||||
ao2_cleanup(device_state_info);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Device state changed since last check - notify the watchers. */
|
||||
hint->laststate = state; /* record we saw the change */
|
||||
|
||||
/* For general callbacks */
|
||||
cb_iter = ao2_iterator_init(statecbs, 0);
|
||||
for (; !same_state && (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_DEVICE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
/* For extension callbacks */
|
||||
/* extended callbacks are called when the state changed or when AST_EVENT_RINGING is
|
||||
* included. Normal callbacks are only called when the state changed.
|
||||
*/
|
||||
cb_iter = ao2_iterator_init(hint->callbacks, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
if (state_cb->extended && first_extended_cb_call) {
|
||||
/* Fill detailed device_state_info now that we know it is used by extd. callback */
|
||||
first_extended_cb_call = 0;
|
||||
get_device_state_causing_channels(device_state_info);
|
||||
}
|
||||
if (state_cb->extended || !same_state) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_DEVICE,
|
||||
hint,
|
||||
state_cb->extended ? device_state_info : NULL);
|
||||
}
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
ao2_cleanup(device_state_info);
|
||||
}
|
||||
|
||||
static int handle_statechange(void *datap)
|
||||
{
|
||||
struct ast_hint *hint;
|
||||
struct statechange *sc = datap;
|
||||
struct ast_str *hint_app;
|
||||
struct ast_hintdevice *device;
|
||||
struct ast_hintdevice *cmpdevice;
|
||||
struct statechange *sc = datap;
|
||||
struct ao2_iterator *dev_iter;
|
||||
struct ao2_iterator cb_iter;
|
||||
char context_name[AST_MAX_CONTEXT];
|
||||
char exten_name[AST_MAX_EXTENSION];
|
||||
|
||||
if (ao2_container_count(hintdevices) == 0) {
|
||||
/* There are no hints monitoring devices. */
|
||||
@@ -5541,94 +5641,9 @@ static int handle_statechange(void *datap)
|
||||
}
|
||||
|
||||
for (; (device = ao2_iterator_next(dev_iter)); ao2_t_ref(device, -1, "Next device")) {
|
||||
struct ast_state_cb *state_cb;
|
||||
int state;
|
||||
int same_state;
|
||||
struct ao2_container *device_state_info;
|
||||
int first_extended_cb_call = 1;
|
||||
|
||||
if (!device->hint) {
|
||||
/* Should never happen. */
|
||||
continue;
|
||||
if (device->hint) {
|
||||
device_state_notify_callbacks(device->hint, &hint_app);
|
||||
}
|
||||
hint = device->hint;
|
||||
|
||||
ao2_lock(hint);
|
||||
if (!hint->exten) {
|
||||
/* The extension has already been destroyed */
|
||||
ao2_unlock(hint);
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Save off strings in case the hint extension gets destroyed
|
||||
* while we are notifying the watchers.
|
||||
*/
|
||||
ast_copy_string(context_name,
|
||||
ast_get_context_name(ast_get_extension_context(hint->exten)),
|
||||
sizeof(context_name));
|
||||
ast_copy_string(exten_name, ast_get_extension_name(hint->exten),
|
||||
sizeof(exten_name));
|
||||
ast_str_set(&hint_app, 0, "%s", ast_get_extension_app(hint->exten));
|
||||
ao2_unlock(hint);
|
||||
|
||||
/*
|
||||
* Get device state for this hint.
|
||||
*
|
||||
* NOTE: We cannot hold any locks while determining the hint
|
||||
* device state or notifying the watchers without causing a
|
||||
* deadlock. (conlock, hints, and hint)
|
||||
*/
|
||||
/* Make a container so state3 can fill it if we wish.
|
||||
* If that failed we simply do not provide the extended state info.
|
||||
*/
|
||||
device_state_info = alloc_device_state_info();
|
||||
state = ast_extension_state3(hint_app, device_state_info);
|
||||
if ((same_state = state == hint->laststate) && (~state & AST_EXTENSION_RINGING)) {
|
||||
ao2_cleanup(device_state_info);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Device state changed since last check - notify the watchers. */
|
||||
hint->laststate = state; /* record we saw the change */
|
||||
|
||||
/* For general callbacks */
|
||||
cb_iter = ao2_iterator_init(statecbs, 0);
|
||||
for (; !same_state && (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_DEVICE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
/* For extension callbacks */
|
||||
/* extended callbacks are called when the state changed or when AST_EVENT_RINGING is
|
||||
* included. Normal callbacks are only called when the state changed.
|
||||
*/
|
||||
cb_iter = ao2_iterator_init(hint->callbacks, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
if (state_cb->extended && first_extended_cb_call) {
|
||||
/* Fill detailed device_state_info now that we know it is used by extd. callback */
|
||||
first_extended_cb_call = 0;
|
||||
get_device_state_causing_channels(device_state_info);
|
||||
}
|
||||
if (state_cb->extended || !same_state) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
context_name,
|
||||
exten_name,
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_DEVICE,
|
||||
hint,
|
||||
state_cb->extended ? device_state_info : NULL);
|
||||
}
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
ao2_cleanup(device_state_info);
|
||||
}
|
||||
ast_mutex_unlock(&context_merge_lock);
|
||||
|
||||
@@ -5990,31 +6005,38 @@ static int ast_add_hint(struct ast_exten *e)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \brief Publish a hint changed event */
|
||||
static int publish_hint_change(struct ast_hint *hint, struct ast_exten *ne)
|
||||
{
|
||||
struct ast_event *event;
|
||||
|
||||
/*
|
||||
* Since hint is an ao2_object we need to pass in a pointer to the hint pointer,
|
||||
* which gets copied by the event subsystem. The event handler will take care of
|
||||
* de-referencing the hint.
|
||||
*/
|
||||
ao2_ref(hint, +1);
|
||||
if (!(event = ast_event_new(AST_EVENT_HINT_CHANGE,
|
||||
AST_EVENT_IE_HINT_CHANGE_PAYLOAD, AST_EVENT_IE_PLTYPE_RAW, &hint,
|
||||
sizeof(hint), /* We actually want the size of the pointer */
|
||||
AST_EVENT_IE_END))) {
|
||||
ao2_ref(hint, -1);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_event_queue_and_cache(event);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*! \brief Change hint for an extension */
|
||||
static int ast_change_hint(struct ast_exten *oe, struct ast_exten *ne)
|
||||
{
|
||||
struct ast_str *hint_app;
|
||||
struct ast_hint *hint;
|
||||
int previous_device_state;
|
||||
char *previous_message = NULL;
|
||||
char *message = NULL;
|
||||
char *previous_subtype = NULL;
|
||||
char *subtype = NULL;
|
||||
int previous_presence_state;
|
||||
int presence_state;
|
||||
int presence_state_changed = 0;
|
||||
|
||||
if (!oe || !ne) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
hint_app = ast_str_create(1024);
|
||||
if (!hint_app) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
ast_mutex_lock(&context_merge_lock); /* Hold off ast_merge_contexts_and_delete and state changes */
|
||||
|
||||
ao2_lock(hints);/* Locked to hold off others while we move the hint around. */
|
||||
|
||||
/*
|
||||
@@ -6025,7 +6047,6 @@ static int ast_change_hint(struct ast_exten *oe, struct ast_exten *ne)
|
||||
if (!hint) {
|
||||
ao2_unlock(hints);
|
||||
ast_mutex_unlock(&context_merge_lock);
|
||||
ast_free(hint_app);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -6035,25 +6056,6 @@ static int ast_change_hint(struct ast_exten *oe, struct ast_exten *ne)
|
||||
ao2_lock(hint);
|
||||
hint->exten = ne;
|
||||
|
||||
/* Store the previous states so we know whether we need to notify state callbacks */
|
||||
previous_device_state = hint->laststate;
|
||||
previous_presence_state = hint->last_presence_state;
|
||||
previous_message = hint->last_presence_message;
|
||||
previous_subtype = hint->last_presence_subtype;
|
||||
|
||||
/* Update the saved device and presence state with the new extension */
|
||||
hint->laststate = ast_extension_state2(ne, NULL);
|
||||
hint->last_presence_state = AST_PRESENCE_INVALID;
|
||||
hint->last_presence_subtype = NULL;
|
||||
hint->last_presence_message = NULL;
|
||||
|
||||
presence_state = extension_presence_state_helper(ne, &subtype, &message);
|
||||
if (presence_state > 0) {
|
||||
hint->last_presence_state = presence_state;
|
||||
hint->last_presence_subtype = subtype;
|
||||
hint->last_presence_message = message;
|
||||
}
|
||||
|
||||
ao2_unlock(hint);
|
||||
|
||||
ao2_link(hints, hint);
|
||||
@@ -6062,103 +6064,59 @@ static int ast_change_hint(struct ast_exten *oe, struct ast_exten *ne)
|
||||
ast_get_extension_name(ne),
|
||||
ast_get_context_name(ast_get_extension_context(ne)));
|
||||
}
|
||||
|
||||
ao2_unlock(hints);
|
||||
|
||||
/* Locking for state callbacks is respected here and only the context_merge_lock lock is
|
||||
* held during the state callback invocation. This will stop the normal state callback
|
||||
* thread from being able to handle incoming state changes if they occur.
|
||||
*/
|
||||
|
||||
/* Determine if presence state has changed due to the change of the hint extension */
|
||||
if ((hint->last_presence_state != previous_presence_state) ||
|
||||
strcmp(S_OR(hint->last_presence_subtype, ""), S_OR(previous_subtype, "")) ||
|
||||
strcmp(S_OR(hint->last_presence_message, ""), S_OR(previous_message, ""))) {
|
||||
presence_state_changed = 1;
|
||||
}
|
||||
|
||||
/* Notify any existing state callbacks if the device or presence state has changed */
|
||||
if ((hint->laststate != previous_device_state) || presence_state_changed) {
|
||||
struct ao2_iterator cb_iter;
|
||||
struct ast_state_cb *state_cb;
|
||||
struct ao2_container *device_state_info;
|
||||
int first_extended_cb_call = 1;
|
||||
|
||||
/* For general callbacks */
|
||||
cb_iter = ao2_iterator_init(statecbs, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
/* Unlike the normal state callbacks since something has explicitly provided us this extension
|
||||
* it will remain valid and unchanged for the lifetime of this function invocation.
|
||||
*/
|
||||
if (hint->laststate != previous_device_state) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
ast_get_context_name(ast_get_extension_context(ne)),
|
||||
ast_get_extension_name(ne),
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_DEVICE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
if (presence_state_changed) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
ast_get_context_name(ast_get_extension_context(ne)),
|
||||
ast_get_extension_name(ne),
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_PRESENCE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
ast_str_set(&hint_app, 0, "%s", ast_get_extension_app(ne));
|
||||
|
||||
device_state_info = alloc_device_state_info();
|
||||
ast_extension_state3(hint_app, device_state_info);
|
||||
|
||||
/* For extension callbacks */
|
||||
cb_iter = ao2_iterator_init(hint->callbacks, 0);
|
||||
for (; (state_cb = ao2_iterator_next(&cb_iter)); ao2_ref(state_cb, -1)) {
|
||||
if (hint->laststate != previous_device_state) {
|
||||
if (state_cb->extended && first_extended_cb_call) {
|
||||
/* Fill detailed device_state_info now that we know it is used by extd. callback */
|
||||
first_extended_cb_call = 0;
|
||||
get_device_state_causing_channels(device_state_info);
|
||||
}
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
ast_get_context_name(ast_get_extension_context(ne)),
|
||||
ast_get_extension_name(ne),
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_DEVICE,
|
||||
hint,
|
||||
state_cb->extended ? device_state_info : NULL);
|
||||
}
|
||||
if (presence_state_changed) {
|
||||
execute_state_callback(state_cb->change_cb,
|
||||
ast_get_context_name(ast_get_extension_context(ne)),
|
||||
ast_get_extension_name(ne),
|
||||
state_cb->data,
|
||||
AST_HINT_UPDATE_PRESENCE,
|
||||
hint,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
ao2_iterator_destroy(&cb_iter);
|
||||
|
||||
ao2_cleanup(device_state_info);
|
||||
}
|
||||
publish_hint_change(hint, ne);
|
||||
|
||||
ao2_ref(hint, -1);
|
||||
|
||||
ast_mutex_unlock(&context_merge_lock);
|
||||
|
||||
ast_free(hint_app);
|
||||
ast_free(previous_message);
|
||||
ast_free(previous_subtype);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int handle_hint_change(void *data)
|
||||
{
|
||||
struct ast_hint *hint = data;
|
||||
struct ast_str *hint_app;
|
||||
int state;
|
||||
struct presencechange presence_state;
|
||||
|
||||
if (!(hint_app = ast_str_create(1024))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
device_state_notify_callbacks(hint, &hint_app);
|
||||
|
||||
state = extension_presence_state_helper(
|
||||
hint->exten, &presence_state.subtype, &presence_state.message);
|
||||
|
||||
presence_state.state = state > 0 ? state : AST_PRESENCE_INVALID;
|
||||
|
||||
presence_state_notify_callbacks(AST_EVENT_HINT_CHANGE, hint, &hint_app, &presence_state);
|
||||
|
||||
ast_free(hint_app);
|
||||
ao2_ref(hint, -1);
|
||||
|
||||
ast_free(presence_state.subtype);
|
||||
ast_free(presence_state.message);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void hint_change_cb(const struct ast_event *event, void *unused)
|
||||
{
|
||||
/* The event data is a pointer to a hint (an ao2_object) */
|
||||
struct ast_hint **hint = (struct ast_hint **)
|
||||
ast_event_get_ie_raw(event, AST_EVENT_IE_HINT_CHANGE_PAYLOAD);
|
||||
|
||||
if (!hint || !*hint) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* The task processor thread is taking our reference to the hint object. */
|
||||
if (ast_taskprocessor_push(extension_state_tps, handle_hint_change, *hint) < 0) {
|
||||
ao2_ref(*hint, -1);
|
||||
}
|
||||
}
|
||||
|
||||
/*! \brief Get hint for channel */
|
||||
int ast_get_hint(char *hint, int hintsize, char *name, int namesize, struct ast_channel *c, const char *context, const char *exten)
|
||||
@@ -12255,6 +12213,9 @@ static void unload_pbx(void)
|
||||
{
|
||||
int x;
|
||||
|
||||
if (hint_change_sub) {
|
||||
hint_change_sub = ast_event_unsubscribe(hint_change_sub);
|
||||
}
|
||||
if (presence_state_sub) {
|
||||
presence_state_sub = ast_event_unsubscribe(presence_state_sub);
|
||||
}
|
||||
@@ -12316,6 +12277,11 @@ int load_pbx(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!(hint_change_sub = ast_event_subscribe(AST_EVENT_HINT_CHANGE, hint_change_cb, "pbx Hint Change", NULL,
|
||||
AST_EVENT_IE_END))) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user