Update for 22.7.0-rc1

This commit is contained in:
Asterisk Development Team
2025-10-30 16:16:44 +00:00
parent 481d4c0e75
commit 2c73433fb8
7 changed files with 1901 additions and 6 deletions

View File

@@ -1 +1 @@
22.6.0
22.7.0-rc1

View File

@@ -1 +1 @@
ChangeLogs/ChangeLog-22.6.0.html
ChangeLogs/ChangeLog-22.7.0-rc1.html

View File

@@ -1 +1 @@
ChangeLogs/ChangeLog-22.6.0.md
ChangeLogs/ChangeLog-22.7.0-rc1.md

View File

@@ -0,0 +1,902 @@
<html><head><title>ChangeLog for asterisk-22.7.0-rc1</title></head><body>
<h2>Change Log for Release asterisk-22.7.0-rc1</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-22.7.0-rc1.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/22.6.0...22.7.0-rc1">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22.7.0-rc1.tar.gz">Tarball</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk">Downloads</a> </li>
</ul>
<h3>Summary:</h3>
<ul>
<li>Commits: 53</li>
<li>Commit Authors: 16</li>
<li>Issues Resolved: 35</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</h4>
<p>The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.</p>
</li>
<li>
<h4>func_channel: Allow R/W of ADSI CPE capability setting.</h4>
<p>CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.</p>
</li>
<li>
<h4>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</h4>
<p>Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.</p>
</li>
<li>
<h4>func_math: Add DIGIT_SUM function.</h4>
<p>The DIGIT_SUM function can be used to return the digit sum of
a number.</p>
</li>
<li>
<h4>app_sf: Add post-digit timer option to ReceiveSF.</h4>
<p>The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.</p>
</li>
<li>
<h4>app_dial: Allow fractional seconds for dial timeouts.</h4>
<p>The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.</p>
</li>
<li>
<h4>chan_dahdi: Add DAHDI_CHANNEL function.</h4>
<p>The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.</p>
</li>
</ul>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>pjsip: Move from threadpool to taskpool</h4>
<p>The threadpool_* options in pjsip.conf have now
been deprecated though they continue to be read and used.
They have been replaced with taskpool options that give greater
control over the underlying taskpool used for PJSIP. An alembic
upgrade script has been added to add these options to realtime
as well.</p>
</li>
<li>
<h4>app_queue.c: Fix error in Queue parameter documentation.</h4>
<p>As part of Asterisk 21, macros were removed from Asterisk.
This resulted in argument order changing for the Queue dialplan
application since the macro argument was removed. Upgrade notice was
missed when this was done, so this upgrade note has been added to
provide a record of such and a notice to users who may have not upgraded
yet.</p>
</li>
<li>
<h4>res_audiosocket: add message types for all slin sample rates</h4>
<p>New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.</p>
</li>
<li>
<h4>taskpool: Add taskpool API, switch Stasis to using it.</h4>
<p>The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.</p>
</li>
</ul>
<h3>Developer Notes:</h3>
<ul>
<li>
<h4>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</h4>
<p>A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.</p>
</li>
<li>
<h4>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</h4>
<p>The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.</p>
</li>
<li>
<h4>taskpool: Add taskpool API, switch Stasis to using it.</h4>
<p>The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.</p>
</li>
</ul>
<h3>Commit Authors:</h3>
<ul>
<li>Anthony Minessale: (1)</li>
<li>Bastian Triller: (1)</li>
<li>Ben Ford: (2)</li>
<li>Christoph Moench-Tegeder: (1)</li>
<li>Gauravs456: (1)</li>
<li>George Joseph: (8)</li>
<li>Igor Goncharovsky: (1)</li>
<li>Joshua C. Colp: (8)</li>
<li>Max Grobecker: (1)</li>
<li>Nathan Monfils: (1)</li>
<li>Naveen Albert: (18)</li>
<li>Phoneben: (2)</li>
<li>Roman Pertsev: (1)</li>
<li>Sean Bright: (3)</li>
<li>Sven Kube: (3)</li>
<li>Tinet-Mucw: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>781: [improvement]: Allow call by call disabling Stir/Shaken header inclusion </li>
<li>1340: [bug]: comfort noise packet corrupted</li>
<li>1419: [bug]: static code analysis issues in app_adsiprog.c</li>
<li>1422: [bug]: static code analysis issues in apps/app_externalivr.c</li>
<li>1425: [bug]: static code analysis issues in apps/app_queue.c</li>
<li>1434: [improvement]: pbx_variables: Create real channel for dialplan eval CLI command</li>
<li>1436: [improvement]: res_cliexec: Avoid unnecessary cast to char*</li>
<li>1455: [new-feature]: chan_dahdi: Add DAHDI_CHANNEL function</li>
<li>1467: [bug]: Crash in res_pjsip_refer during REFER progress teardown with PJSIP_TRANSFER_HANDLING(ari-only)</li>
<li>1478: [improvement]: Stasis threadpool -&gt; taskpool</li>
<li>1479: [bug]: The ARI bridge play and record APIs limit audio bandwidth by forcing the slin8 format.</li>
<li>1483: [improvement]: sig_analog: Eliminate possible timeout for Last Number Redial</li>
<li>1485: [improvement]: func_scramble: Add example to XML documentation.</li>
<li>1487: [improvement]: app_dial: Allow partial seconds to be used for dial timeouts</li>
<li>1489: [improvement]: config_options.c: Improve misleading error message</li>
<li>1491: [bug]: Segfault: <code>channelstorage_cpp</code> fast lookup without lock (<code>get_by_name_exact</code>/<code>get_by_uniqueid</code>) leads to UAF during hangup</li>
<li>1493: [new-feature]: app_sf: Add post-digit timer option</li>
<li>1496: [improvement]: dsp.c: Minor fixes to debug log messages</li>
<li>1499: [new-feature]: func_math: Add function to return the digit sum</li>
<li>1501: [improvement]: codec_builtin: Fix some inaccurate quality weights.</li>
<li>1505: [improvement]: res_fax: Add XML documentation for channel variables</li>
<li>1507: [improvement]: res_tonedetect: Minor formatting issue in documentation</li>
<li>1509: [improvement]: res_fax.c — log debug error as debug, not regular log</li>
<li>1510: [new-feature]: sig_analog: Allow '#' to end the inter-digit timeout when dialing.</li>
<li>1514: [improvement]: func_channel: Allow R/W of ADSI CPE capability setting.</li>
<li>1517: [improvement]: core_unreal: Preserve ADSI capability when dialing Local channels</li>
<li>1519: [improvement]: app_dial / func_callerid: DNIS information is not propagated by Dial</li>
<li>1525: [bug]: chan_websocket: fix use of raw payload variable for string comparison in process_text_message</li>
<li>1534: [bug]: app_queue when using gosub breaks dialplan when going from 20 to 21, What's new in 21 doesn't mention it's a breaking change,</li>
<li>1535: [bug]: chan_pjsip changes SSRC on WebRTC channels, which is unsupported by some browsers</li>
<li>1536: [bug]: asterisk -rx connects to console instead of executing a command</li>
<li>1539: [bug]: safe_asterisk without TTY doesn't log to file</li>
<li>1544: [improvement]: While Receiving the MediaConnect Message Using External Media Over websocket ChannelID is Details are missing</li>
<li>1554: [bug]: safe_asterisk recurses into subdirectories of startup.d after f97361</li>
<li>1559: [improvement]: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Anthony Minessale (1):</h4>
</li>
<li>
<p>Update contact information for anthm</p>
</li>
<li>
<h4>Bastian Triller (1):</h4>
</li>
<li>
<p>Fix some doxygen, typos and whitespace</p>
</li>
<li>
<h4>Ben Ford (2):</h4>
</li>
<li>rtp_engine.c: Add exception for comfort noise payload.</li>
<li>
<p>app_queue.c: Fix error in Queue parameter documentation.</p>
</li>
<li>
<h4>Christoph Moench-Tegeder (1):</h4>
</li>
<li>
<p>Fix Endianness detection in utils.h for non-Linux</p>
</li>
<li>
<h4>George Joseph (8):</h4>
</li>
<li>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</li>
<li>channelstorage_cpp_map_name_id: Add read locking around retrievals.</li>
<li>chan_websocket.c: Change payload references to command instead.</li>
<li>taskpool: Fix some references to threadpool that should be taskpool.</li>
<li>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</li>
<li>safe_asterisk: Fix logging and sorting issue.</li>
<li>chan_pjsip: Disable SSRC change for WebRTC endpoints.</li>
<li>
<p>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</p>
</li>
<li>
<h4>Igor Goncharovsky (1):</h4>
</li>
<li>
<p>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</p>
</li>
<li>
<h4>Joshua C. Colp (8):</h4>
</li>
<li>taskpool: Add taskpool API, switch Stasis to using it.</li>
<li>taskpool: Update versions for taskpool stasis options.</li>
<li>sorcery: Move from threadpool to taskpool.</li>
<li>app_queue: Allow stasis message filtering to work.</li>
<li>endpoints: Remove need for stasis subscription.</li>
<li>devicestate: Don't publish redundant device state messages.</li>
<li>pjsip: Move from threadpool to taskpool</li>
<li>
<p>Revert "pjsip: Move from threadpool to taskpool"</p>
</li>
<li>
<h4>Max Grobecker (1):</h4>
</li>
<li>
<p>res_pjsip_geolocation: Add support for Geolocation loc-src parameter</p>
</li>
<li>
<h4>Nathan Monfils (1):</h4>
</li>
<li>
<p>manager.c: Fix presencestate object leak</p>
</li>
<li>
<h4>Naveen Albert (18):</h4>
</li>
<li>pbx_variables.c: Create real channel for "dialplan eval function".</li>
<li>res_cliexec: Remove unnecessary casts to char*.</li>
<li>app_adsiprog: Fix possible NULL dereference.</li>
<li>chan_dahdi: Add DAHDI_CHANNEL function.</li>
<li>sig_analog: Eliminate potential timeout with Last Number Redial.</li>
<li>func_scramble: Add example to XML documentation.</li>
<li>config_options.c: Improve misleading warning.</li>
<li>dsp.c: Make minor fixes to debug log messages.</li>
<li>app_dial: Allow fractional seconds for dial timeouts.</li>
<li>res_fax: Add XML documentation for channel variables.</li>
<li>res_tonedetect: Fix formatting of XML documentation.</li>
<li>codec_builtin.c: Adjust some of the quality scores to reflect reality.</li>
<li>app_sf: Add post-digit timer option to ReceiveSF.</li>
<li>func_math: Add DIGIT_SUM function.</li>
<li>sig_analog: Allow '#' to end the inter-digit timeout when dialing.</li>
<li>core_unreal: Preserve ADSI capability when dialing Local channels.</li>
<li>func_channel: Allow R/W of ADSI CPE capability setting.</li>
<li>
<p>func_callerid: Document limitation of DNID fields.</p>
</li>
<li>
<h4>Roman Pertsev (1):</h4>
</li>
<li>
<p>res_audiosocket: fix temporarily unavailable</p>
</li>
<li>
<h4>Sean Bright (3):</h4>
</li>
<li>audiohook.c: Ensure correct AO2 reference is dereffed.</li>
<li>app_externalivr: Prevent out-of-bounds read during argument processing.</li>
<li>
<p>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</p>
</li>
<li>
<h4>Sven Kube (3):</h4>
</li>
<li>stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_..</li>
<li>stasis_channels.c: Make protocol_id optional to enable blind transfer via ari</li>
<li>
<p>res_audiosocket: add message types for all slin sample rates</p>
</li>
<li>
<h4>Tinet-mucw (1):</h4>
</li>
<li>
<p>iostream.c: Handle TLS handshake attacks in order to resolve the issue of exce..</p>
</li>
<li>
<h4>gauravs456 (1):</h4>
</li>
<li>
<p>chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END even..</p>
</li>
<li>
<h4>phoneben (2):</h4>
</li>
<li>app_queue: Add NULL pointer checks in app_queue</li>
<li>res_fax.c: lower FAXOPT read warning to debug level</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>res_audiosocket: fix temporarily unavailable</li>
<li>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</li>
<li>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</li>
<li>Revert "pjsip: Move from threadpool to taskpool"</li>
<li>chan_pjsip: Disable SSRC change for WebRTC endpoints.</li>
<li>pjsip: Move from threadpool to taskpool</li>
<li>safe_asterisk: Fix logging and sorting issue.</li>
<li>Fix Endianness detection in utils.h for non-Linux</li>
<li>app_queue.c: Fix error in Queue parameter documentation.</li>
<li>devicestate: Don't publish redundant device state messages.</li>
<li>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</li>
<li>res_audiosocket: add message types for all slin sample rates</li>
<li>res_fax.c: lower FAXOPT read warning to debug level</li>
<li>endpoints: Remove need for stasis subscription.</li>
<li>app_queue: Allow stasis message filtering to work.</li>
<li>taskpool: Fix some references to threadpool that should be taskpool.</li>
<li>Update contact information for anthm</li>
<li>chan_websocket.c: Change payload references to command instead.</li>
<li>func_callerid: Document limitation of DNID fields.</li>
<li>func_channel: Allow R/W of ADSI CPE capability setting.</li>
<li>core_unreal: Preserve ADSI capability when dialing Local channels.</li>
<li>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</li>
<li>sig_analog: Allow '#' to end the inter-digit timeout when dialing.</li>
<li>func_math: Add DIGIT_SUM function.</li>
<li>app_sf: Add post-digit timer option to ReceiveSF.</li>
<li>codec_builtin.c: Adjust some of the quality scores to reflect reality.</li>
<li>res_tonedetect: Fix formatting of XML documentation.</li>
<li>res_fax: Add XML documentation for channel variables.</li>
<li>channelstorage_cpp_map_name_id: Add read locking around retrievals.</li>
<li>app_dial: Allow fractional seconds for dial timeouts.</li>
<li>dsp.c: Make minor fixes to debug log messages.</li>
<li>config_options.c: Improve misleading warning.</li>
<li>func_scramble: Add example to XML documentation.</li>
<li>sig_analog: Eliminate potential timeout with Last Number Redial.</li>
<li>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</li>
<li>res_pjsip_geolocation: Add support for Geolocation loc-src parameter</li>
<li>sorcery: Move from threadpool to taskpool.</li>
<li>stasis_channels.c: Make protocol_id optional to enable blind transfer via ari</li>
<li>Fix some doxygen, typos and whitespace</li>
<li>app_queue: Add NULL pointer checks in app_queue</li>
<li>app_externalivr: Prevent out-of-bounds read during argument processing.</li>
<li>chan_dahdi: Add DAHDI_CHANNEL function.</li>
<li>taskpool: Update versions for taskpool stasis options.</li>
<li>taskpool: Add taskpool API, switch Stasis to using it.</li>
<li>app_adsiprog: Fix possible NULL dereference.</li>
<li>manager.c: Fix presencestate object leak</li>
<li>audiohook.c: Ensure correct AO2 reference is dereffed.</li>
<li>res_cliexec: Remove unnecessary casts to char*.</li>
<li>rtp_engine.c: Add exception for comfort noise payload.</li>
<li>pbx_variables.c: Create real channel for "dialplan eval function".</li>
</ul>
<h3>Commit Details:</h3>
<h4>res_audiosocket: fix temporarily unavailable</h4>
<p>Author: Roman Pertsev
Date: 2025-10-07</p>
<p>Operations on non-blocking sockets may return a resource temporarily unavailable error (EAGAIN or EWOULDBLOCK). This is not a fatal error but a normal condition indicating that the operation would block.</p>
<p>This patch corrects the handling of this case. Instead of incorrectly treating it as a reason to terminate the connection, the code now waits for data to arrive on the socket.</p>
<h4>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</h4>
<p>Author: Sean Bright
Date: 2025-10-22</p>
<ul>
<li>Using <code>==</code> with the POSIX sh <code>test</code> utility is UB.</li>
<li>Switch back to using globs instead of using <code>$(find … | sort)</code>.</li>
<li>Fix a missing redirect when checking for the OS type.</li>
</ul>
<p>Resolves: #1554</p>
<h4>res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.</h4>
<p>Author: George Joseph
Date: 2025-10-24</p>
<p>Also...</p>
<ul>
<li>
<p>Refactored the verification datastore process so instead of having
a separate channel datastore for each verification result, there's only
one channel datastore with a vector of results.</p>
</li>
<li>
<p>Refactored some log messages to include channel name and removed
some that would be redundant if a memory allocation failed.</p>
</li>
</ul>
<p>Resolves: #781</p>
<p>UserNote: The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.</p>
<h4>Revert "pjsip: Move from threadpool to taskpool"</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-27</p>
<p>This reverts commit bb6b76c2d8239b2665223dcbf6d507aa9aa4534e.</p>
<h4>iostream.c: Handle TLS handshake attacks in order to resolve the issue of exce..</h4>
<p>Author: Tinet-mucw
Date: 2025-10-26</p>
<p>The TCP three-way handshake completes, but if the server is under a TLS handshake attack, asterisk will get stuck at SSL_do_handshake().
In this case, a timeout mechanism should be set for the SSL/TLS handshake process to prevent indefinite waiting during the SSL handshake.</p>
<p>Resolves: #1559</p>
<h4>chan_pjsip: Disable SSRC change for WebRTC endpoints.</h4>
<p>Author: George Joseph
Date: 2025-10-21</p>
<p>Commit b333ee3b introduced a fix to chan_pjsip that addressed RTP issues with
blind transfers and some SBCs. Unfortunately, the fix broke some WebRTC
clients that are sensitive to SSRC changes and non-monotonic timestamps so
the fix is now disabled for endpoints with the "bundle" parameter set to true.</p>
<p>Resolves: #1535</p>
<h4>chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END even..</h4>
<p>Author: gauravs456
Date: 2025-10-21</p>
<p>Resolves: #1544</p>
<h4>pjsip: Move from threadpool to taskpool</h4>
<p>Author: Joshua C. Colp
Date: 2025-09-23</p>
<p>This change moves the PJSIP module from the threadpool API
to the taskpool API. PJSIP-specific implementations for
task usage have been removed and replaced with calls to
the optimized taskpool implementations instead. The need
for a pool of serializers has also been removed as
taskpool inherently provides this. The default settings
have also been changed to be more realistic for common
usage.</p>
<p>UpgradeNote: The threadpool_* options in pjsip.conf have now
been deprecated though they continue to be read and used.
They have been replaced with taskpool options that give greater
control over the underlying taskpool used for PJSIP. An alembic
upgrade script has been added to add these options to realtime
as well.</p>
<h4>safe_asterisk: Fix logging and sorting issue.</h4>
<p>Author: George Joseph
Date: 2025-10-17</p>
<p>Re-enabled "TTY=9" which was erroneously disabled as part of a recent
security fix and removed another logging "fix" that was added.</p>
<p>Also added a sort to the "find" that enumerates the scripts to be sourced so
they're sourced in the correct order.</p>
<p>Resolves: #1539</p>
<h4>Fix Endianness detection in utils.h for non-Linux</h4>
<p>Author: Christoph Moench-Tegeder
Date: 2025-10-19</p>
<p>Commit 43bf8a4ded7a65203b766b91eaf8331a600e9d8d introduced endian
dependend byte-swapping code in include/asterisk/utils.h, where the
endianness was detected using the __BYTE_ORDER macro. This macro
lives in endian.h, which on Linux is included implicitely (by the
network-related headers, I think), but on FreeBSD the headers are
laid out differently and we do not get __BYTE_ORDER the implicit way.</p>
<p>Instead, this makes the usage of endian.h explicit by including it
where we need it, and switches the BYTE_ORDER/*ENDIAN macros to the
POSIX-defined ones (see
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/endian.h.html
for standard compliance). Additionally, this adds a compile-time check
for the endianness-logic: compilation will fail if neither big nor
little endian can be detected.</p>
<p>Fixes: #1536</p>
<h4>app_queue.c: Fix error in Queue parameter documentation.</h4>
<p>Author: Ben Ford
Date: 2025-10-20</p>
<p>When macro was removed in Asterisk 21, the parameter documentation in
code was not updated to reflect the correct numerization for gosub. It
still stated that it was the seventh parameter, but got shifted to the
sixth due to the removal of macro. This has been updated to correctly
reflect the parameter order, and a note has been added to the XML that
states this was done after the initial commit.</p>
<p>Fixes: #1534</p>
<p>UpgradeNote: As part of Asterisk 21, macros were removed from Asterisk.
This resulted in argument order changing for the Queue dialplan
application since the macro argument was removed. Upgrade notice was
missed when this was done, so this upgrade note has been added to
provide a record of such and a notice to users who may have not upgraded
yet.</p>
<h4>devicestate: Don't publish redundant device state messages.</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-17</p>
<p>When publishing device state check the local cache for the
existing device state. If the new device state is unchanged
from the prior one, don't bother publishing the update. This
can reduce the work done by consumers of device state, such
as hints and app_queue, by not publishing a message to them.</p>
<p>These messages would most often occur with devices that are
seeing numerous simultaneous channels. The underlying device
state would remain as in use throughout, but an update would
be published as channels are created and hung up.</p>
<h4>chan_pjsip: Add technology-specific off-nominal hangup cause to events.</h4>
<p>Author: George Joseph
Date: 2025-10-14</p>
<p>Although the ISDN/Q.850/Q.931 hangup cause code is already part of the ARI
and AMI hangup and channel destroyed events, it can be helpful to know what
the actual channel technology code was if the call was unsuccessful.
For PJSIP, it's the SIP response code.</p>
<ul>
<li>
<p>A new "tech_hangupcause" field was added to the ast_channel structure along
with ast_channel_tech_hangupcause() and ast_channel_tech_hangupcause_set()
functions. It should only be set for off-nominal terminations.</p>
</li>
<li>
<p>chan_pjsip was modified to set the tech hangup cause in the
chan_pjsip_hangup() and chan_pjsip_session_end() functions. This is a bit
tricky because these two functions aren't always called in the same order.
The channel that hangs up first will get chan_pjsip_session_end() called
first which will trigger the core to call chan_pjsip_hangup() on itself,
then call chan_pjsip_hangup() on the other channel. The other channel's
chan_pjsip_session_end() function will get called last. Unfortunately,
the other channel's HangupRequest events are sent before chan_pjsip has had a
chance to set the tech hangupcause code so the HangupRequest events for that
channel won't have the cause code set. The ChannelDestroyed and Hangup
events however will have the code set for both channels.</p>
</li>
<li>
<p>A new "tech_cause" field was added to the ast_channel_snapshot_hangup
structure. This is a public structure so a bit of refactoring was needed to
preserve ABI compatibility.</p>
</li>
<li>
<p>The ARI ChannelHangupRequest and ChannelDestroyed events were modified to
include the "tech_cause" parameter in the JSON for off-nominal terminations.
The parameter is suppressed for nominal termination.</p>
</li>
<li>
<p>The AMI SoftHangupRequest, HangupRequest and Hangup events were modified to
include the "TechCause" parameter for off-nominal terminations. Like their ARI
counterparts, the parameter is suppressed for nominal termination.</p>
</li>
</ul>
<p>DeveloperNote: A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.</p>
<h4>res_audiosocket: add message types for all slin sample rates</h4>
<p>Author: Sven Kube
Date: 2025-10-10</p>
<p>Extend audiosocket messages with types 0x11 - 0x18 to create asterisk
frames in slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 format, enabling the transmission of audio at a higher sample
rates. For audiosocket messages sent by Asterisk, the message kind is
determined by the format of the originating asterisk frame.</p>
<p>UpgradeNote: New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.</p>
<h4>res_fax.c: lower FAXOPT read warning to debug level</h4>
<p>Author: phoneben
Date: 2025-10-03</p>
<p>Reading ${FAXOPT()} before a fax session is common in dialplans to check fax state.
Currently this logs an error even when no fax datastore exists, creating excessive noise.
Change these messages to ast_debug(3, …) so they appear only with debug enabled.</p>
<p>Resolves: #1509</p>
<h4>endpoints: Remove need for stasis subscription.</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-10</p>
<p>When an endpoint is created in the core of Asterisk a subscription
was previously created alongside it to monitor any channels being
destroyed that were related to it. This was done by receiving all
channel snapshot updates for every channel and only reacting when
it was indicated that the channel was dead.</p>
<p>This change removes this logic and instead provides an API call
for directly removing a channel from an endpoint. This is called
when channels are destroyed. This operation is fast, so blocking
the calling thread for a short period of time doesn't have any
noticeable impact.</p>
<h4>app_queue: Allow stasis message filtering to work.</h4>
<p>Author: Joshua C. Colp
Date: 2025-10-10</p>
<p>The app_queue module subscribes on a per-dialed agent basis to both
the bridge all and channel all topics to keep apprised of things going
on involving them. This subscription has associated state that must
be cleaned up when the subscription ends. This was done by setting
a default router callback that only had logic to handle the case
where the subscription ends. By using the default router callback
all filtering for the subscription was disabled, causing unrelated
messages to get published and handled by it.</p>
<p>This change makes it so that an explicit route is added for the
message type used for the message indicating the subscription has
ended and removes the default router callback. This allows message
filtering to occur on publishing reducing the messages to app_queue
to only those it is interested in.</p>
<h4>taskpool: Fix some references to threadpool that should be taskpool.</h4>
<p>Author: George Joseph
Date: 2025-10-10</p>
<p>Resolves: #1478</p>
<h4>Update contact information for anthm</h4>
<p>Author: Anthony Minessale
Date: 2025-10-10</p>
<h4>chan_websocket.c: Change payload references to command instead.</h4>
<p>Author: George Joseph
Date: 2025-10-08</p>
<p>Some of the tests in process_text_message() were still comparing to the
websocket message payload instead of the "command" string.</p>
<p>Resolves: #1525</p>
<h4>func_callerid: Document limitation of DNID fields.</h4>
<p>Author: Naveen Albert
Date: 2025-10-06</p>
<p>The Dial() application does not propagate DNID fields, which is counter
to the behavior of the other Caller ID fields. This behavior is likely
intentional since the use of Dial theoretically suggests a new dialed
number, but document this caveat to inform users of it.</p>
<p>Resolves: #1519</p>
<h4>func_channel: Allow R/W of ADSI CPE capability setting.</h4>
<p>Author: Naveen Albert
Date: 2025-10-06</p>
<p>Allow retrieving and setting the channel's ADSI capability from the
dialplan.</p>
<p>Resolves: #1514</p>
<p>UserNote: CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.</p>
<h4>core_unreal: Preserve ADSI capability when dialing Local channels.</h4>
<p>Author: Naveen Albert
Date: 2025-10-06</p>
<p>Dial() already preserves the ADSI capability by copying it to the new
channel, but since Local channel pairs consist of two channels, we
also need to copy the capability to the second channel.</p>
<p>Resolves: #1517</p>
<h4>func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()</h4>
<p>Author: Igor Goncharovsky
Date: 2025-09-04</p>
<p>As soon as SIP call may end with several Reason headers, we
want to make all of them available through the HAGUPCAUSE() function.
This implementation uses the same ao2 hash for cause codes storage
and adds a flag to make difference between last processed sip
message and content of reason headers.</p>
<p>UserNote: Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.</p>
<h4>sig_analog: Allow '#' to end the inter-digit timeout when dialing.</h4>
<p>Author: Naveen Albert
Date: 2025-10-03</p>
<p>It is customary to allow # to terminate digit collection immediately
when there would normally be a timeout. However, currently, users are
forced to wait for the timeout to expire when dialing numbers that
are prefixes of other valid matches, and there is no way to end the
timeout early. Customarily, # terminates the timeout, but at the moment,
this is just rejected unless there happens to be a matching extension
ending in #.</p>
<p>Allow # to terminate the timeout in cases where there is no dialplan
match. This ensures that the dialplan is always respected, but if a
valid extension has been dialed that happens to prefix other valid
matches, # can be used to dial it immediately.</p>
<p>Resolves: #1510</p>
<h4>func_math: Add DIGIT_SUM function.</h4>
<p>Author: Naveen Albert
Date: 2025-10-01</p>
<p>Add a function (DIGIT_SUM) which returns the digit sum of a number.</p>
<p>Resolves: #1499</p>
<p>UserNote: The DIGIT_SUM function can be used to return the digit sum of
a number.</p>
<h4>app_sf: Add post-digit timer option to ReceiveSF.</h4>
<p>Author: Naveen Albert
Date: 2025-10-01</p>
<p>Add a sorely needed option to set a timeout between digits, rather than
for receiving the entire number. This is needed if the number of digits
being sent is unknown by the receiver in advance. Previously, we had
to wait for the entire timer to expire.</p>
<p>Resolves: #1493</p>
<p>UserNote: The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.</p>
<h4>codec_builtin.c: Adjust some of the quality scores to reflect reality.</h4>
<p>Author: Naveen Albert
Date: 2025-10-02</p>
<p>Among the lower-quality voice codecs, some of the quality scores did
not make sense relative to each other.</p>
<p>For instance, quality-wise, G.729 &gt; G.723 &gt; PLC10.
However, current scores do not uphold these relationships.</p>
<p>Tweak the scores slightly to reflect more accurate relationships.</p>
<p>Resolves: #1501</p>
<h4>res_tonedetect: Fix formatting of XML documentation.</h4>
<p>Author: Naveen Albert
Date: 2025-10-02</p>
<p>Fix the indentation in the documentation for the variable list.</p>
<p>Resolves: #1507</p>
<h4>res_fax: Add XML documentation for channel variables.</h4>
<p>Author: Naveen Albert
Date: 2025-10-02</p>
<p>Document the channel variables currently set by SendFAX and ReceiveFAX.</p>
<p>Resolves: #1505</p>
<h4>channelstorage_cpp_map_name_id: Add read locking around retrievals.</h4>
<p>Author: George Joseph
Date: 2025-10-01</p>
<p>When we retrieve a channel from a C++ map, we actually get back a wrapper
object that points to the channel then right after we retrieve it, we bump its
reference count. There's a tiny chance however that between those two
statements a delete and/or unref might happen which would cause the wrapper
object or the channel itself to become invalid resulting in a SEGV. To avoid
this we now perform a read lock on the driver around those statements.</p>
<p>Resolves: #1491</p>
<h4>app_dial: Allow fractional seconds for dial timeouts.</h4>
<p>Author: Naveen Albert
Date: 2025-09-30</p>
<p>Even though Dial() internally uses milliseconds for its dial timeouts,
this capability has been mostly obscured from users as the argument is
only parsed as an integer, thus forcing the use of whole seconds for
timeouts.</p>
<p>Parse it as a decimal instead so that timeouts can now truly have
millisecond precision.</p>
<p>Resolves: #1487</p>
<p>UserNote: The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.</p>
<h4>dsp.c: Make minor fixes to debug log messages.</h4>
<p>Author: Naveen Albert
Date: 2025-10-01</p>
<p>Commit dc8e3eeaaf094a3d16991289934093d5e7127680 improved the debug log
messages in dsp.c. This makes two minor corrections to it:</p>
<ul>
<li>Properly guard an added log statement in a conditional.</li>
<li>Don't add one to the hit count if there was no hit (however, we do
still want to do this for the case where this is one).</li>
</ul>
<p>Resolves: #1496</p>
<h4>config_options.c: Improve misleading warning.</h4>
<p>Author: Naveen Albert
Date: 2025-09-30</p>
<p>When running "config show help <module>", if no XML documentation exists
for the specified module, "Module <module> not found." is returned,
which is misleading if the module is loaded but simply has no XML
documentation for its config. Improve the message to clarify that the
module may simply have no config documentation.</p>
<p>Resolves: #1489</p>
<h4>func_scramble: Add example to XML documentation.</h4>
<p>Author: Naveen Albert
Date: 2025-09-29</p>
<p>The previous lack of an example made it ambiguous if the arguments went
inside the function arguments or were part of the right-hand value.</p>
<p>Resolves: #1485</p>
<h4>sig_analog: Eliminate potential timeout with Last Number Redial.</h4>
<p>Author: Naveen Albert
Date: 2025-09-29</p>
<p>If Last Number Redial is used to redial, ensure that we do not wait
for further digits. This was possible if the number that was last
dialed is a prefix of another possible dialplan match. Since all we
did is copy the number into the extension buffer, if other matches
are now possible, there would thus be a timeout before the call went
through. We now complete redialed calls immediaetly in all cases.</p>
<p>Resolves: #1483</p>
<h4>ARI: The bridges play and record APIs now handle sample rates &gt; 8K correctly.</h4>
<p>Author: George Joseph
Date: 2025-09-25</p>
<p>The bridge play and record APIs were forcing the Announcer/Recorder channel
to slin8 which meant that if you played or recorded audio with a sample
rate &gt; 8K, it was downsampled to 8K limiting the bandwidth.</p>
<ul>
<li>
<p>The /bridges/play REST APIs have a new "announcer_format" parameter that
allows the caller to explicitly set the format on the "Announcer" channel
through which the audio is played into the bridge. If not specified, the
default depends on how many channels are currently in the bridge. If
a single channel is in the bridge, then the Announcer channel's format
will be set to the same as that channel's. If multiple channels are in the
bridge, the channels will be scanned to find the one with the highest
sample rate and the Announcer channel's format will be set to the slin
format that has an equal to or greater than sample rate.</p>
</li>
<li>
<p>The /bridges/record REST API has a new "recorder_format" parameter that
allows the caller to explicitly set the format on the "Recorder" channel
from which audio is retrieved to write to the file. If not specified,
the Recorder channel's format will be set to the format that was requested
to save the audio in.</p>
</li>
</ul>
<p>Resolves: #1479</p>
<p>DeveloperNote: The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.</p>
<h4>res_pjsip_geolocation: Add support for Geolocation loc-src parameter</h4>
<p>Author: Max Grobecker
Date: 2025-09-21</p>
<p>This adds support for the Geolocation 'loc-src' parameter to res_pjsip_geolocation.
The already existing config option 'location_source` in res_geolocation is documented to add a 'loc-src' parameter containing a user-defined FQDN to the 'Geolocation:' header,
but that option had no effect as it was not implemented by res_pjsip_geolocation.</p>
<p>If the <code>location_source</code> configuration option is not set or invalid, that parameter will not be added (this is already checked by res_geolocation).</p>
<p>This commits adds already documented functionality.</p>
<h4>sorcery: Move from threadpool to taskpool.</h4>
<p>Author: Joshua C. Colp
Date: 2025-09-23</p>
<p>This change moves observer invocation from the use of
a threadpool to a taskpool. The taskpool options have also
been adjusted to ensure that at least one taskprocessor
remains available at all times.</p>
<h4>stasis_channels.c: Make protocol_id optional to enable blind transfer via ari</h4>
<p>Author: Sven Kube
Date: 2025-09-22</p>
<p>When handling SIP transfers via ARI, there is no protocol_id in case of
a blind transfer.</p>
<p>Resolves: #1467</p>
<h4>Fix some doxygen, typos and whitespace</h4>
<p>Author: Bastian Triller
Date: 2025-09-21</p>
<h4>stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_..</h4>
<p>Author: Sven Kube
Date: 2025-09-18</p>
<p>When handling SIP transfers via ARI, the <code>referred_by</code> field in
<code>transfer_ari_state</code> may be null, since SIP REFER requests are not
required to include a <code>Referred-By</code> header. Without this check, a null
value caused the transfer to fail and triggered a NOTIFY with a 500
Internal Server Error.</p>
<h4>app_queue: Add NULL pointer checks in app_queue</h4>
<p>Author: phoneben
Date: 2025-09-11</p>
<p>Add NULL check for word_list before calling word_in_list()
Add NULL checks for channel snapshots from ast_multi_channel_blob_get_channel()</p>
<p>Resolves: #1425</p>
<h4>app_externalivr: Prevent out-of-bounds read during argument processing.</h4>
<p>Author: Sean Bright
Date: 2025-09-17</p>
<p>Resolves: #1422</p>
<h4>chan_dahdi: Add DAHDI_CHANNEL function.</h4>
<p>Author: Naveen Albert
Date: 2025-09-11</p>
<p>Add a dialplan function that can be used to get/set properties of
DAHDI channels (as opposed to Asterisk channels). This exposes
properties that were not previously available, allowing for certain
operations to now be performed in the dialplan.</p>
<p>Resolves: #1455</p>
<p>UserNote: The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.</p>
<h4>taskpool: Update versions for taskpool stasis options.</h4>
<p>Author: Joshua C. Colp
Date: 2025-09-16</p>
<h4>taskpool: Add taskpool API, switch Stasis to using it.</h4>
<p>Author: Joshua C. Colp
Date: 2025-08-06</p>
<p>This change introduces a new API called taskpool. This is a pool
of taskprocessors. It provides the following functionality:</p>
<ol>
<li>Task pushing to a pool of taskprocessors</li>
<li>Synchronous tasks</li>
<li>Serializers for execution ordering of tasks</li>
<li>Growing/shrinking of number of taskprocessors in pool</li>
</ol>
<p>This functionality already exists through the combination of
threadpool+taskprocessors but through investigating I determined
that this carries substantial overhead for short to medium duration
tasks. The threadpool uses a single queue of work, and for management
of threads it involves additional tasks.</p>
<p>I wrote taskpool to eliminate the extra overhead and management
as much as possible. Instead of a single queue of work each
taskprocessor has its own queue and at push time a selector chooses
the taskprocessor to queue the task to. Each taskprocessor also
has its own thread like normal. This spreads out the tasks immediately
and reduces contention on shared resources.</p>
<p>Using the included efficiency tests the number of tasks that can be
executed per second in a taskpool is 6-12 times more than an equivalent
threadpool+taskprocessor setup.</p>
<p>Stasis has been moved over to using this new API as it is a heavy consumer
of threadpool+taskprocessors and produces a lot of tasks.</p>
<p>UpgradeNote: The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.</p>
<p>DeveloperNote: The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.</p>
<h4>app_adsiprog: Fix possible NULL dereference.</h4>
<p>Author: Naveen Albert
Date: 2025-09-10</p>
<p>get_token can return NULL, but process_token uses this result without
checking for NULL; as elsewhere, check for a NULL result to avoid
possible NULL dereference.</p>
<p>Resolves: #1419</p>
<h4>manager.c: Fix presencestate object leak</h4>
<p>Author: Nathan Monfils
Date: 2025-09-08</p>
<p>ast_presence_state allocates subtype and message. We straightforwardly
need to clean those up.</p>
<h4>audiohook.c: Ensure correct AO2 reference is dereffed.</h4>
<p>Author: Sean Bright
Date: 2025-09-10</p>
<p>Part of #1440.</p>
<h4>res_cliexec: Remove unnecessary casts to char*.</h4>
<p>Author: Naveen Albert
Date: 2025-09-09</p>
<p>Resolves: #1436</p>
<h4>rtp_engine.c: Add exception for comfort noise payload.</h4>
<p>Author: Ben Ford
Date: 2025-09-09</p>
<p>In a previous commit, a change was made to
ast_rtp_codecs_payload_code_tx_sample_rate to check for differing sample
rates. This ended up returning an invalid payload int for comfort noise.
A check has been added that returns early if the payload is in fact
supposed to be comfort noise.</p>
<p>Fixes: #1340</p>
<h4>pbx_variables.c: Create real channel for "dialplan eval function".</h4>
<p>Author: Naveen Albert
Date: 2025-09-09</p>
<p>"dialplan eval function" has been using a dummy channel for function
evaluation, much like many of the unit tests. However, sometimes, this
can cause issues for functions that are not expecting dummy channels.
As an example, ast_channel_tech(chan) is NULL on such channels, and
ast_channel_tech(chan)-&gt;type consequently results in a NULL dereference.
Normally, functions do not worry about this since channels executing
dialplan aren't dummy channels.</p>
<p>While some functions are better about checking for these sorts of edge
cases, use a real channel with a dummy technology to make this CLI
command inherently safe for any dialplan function that could be evaluated
from the CLI.</p>
<p>Resolves: #1434</p>
</body></html>

View File

@@ -0,0 +1,993 @@
## Change Log for Release asterisk-22.7.0-rc1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-22.7.0-rc1.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/22.6.0...22.7.0-rc1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-22.7.0-rc1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 53
- Commit Authors: 16
- Issues Resolved: 35
- Security Advisories Resolved: 0
### User Notes:
- #### res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.
- #### func_channel: Allow R/W of ADSI CPE capability setting.
CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.
- #### func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.
- #### func_math: Add DIGIT_SUM function.
The DIGIT_SUM function can be used to return the digit sum of
a number.
- #### app_sf: Add post-digit timer option to ReceiveSF.
The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.
- #### app_dial: Allow fractional seconds for dial timeouts.
The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.
- #### chan_dahdi: Add DAHDI_CHANNEL function.
The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.
### Upgrade Notes:
- #### pjsip: Move from threadpool to taskpool
The threadpool_* options in pjsip.conf have now
been deprecated though they continue to be read and used.
They have been replaced with taskpool options that give greater
control over the underlying taskpool used for PJSIP. An alembic
upgrade script has been added to add these options to realtime
as well.
- #### app_queue.c: Fix error in Queue parameter documentation.
As part of Asterisk 21, macros were removed from Asterisk.
This resulted in argument order changing for the Queue dialplan
application since the macro argument was removed. Upgrade notice was
missed when this was done, so this upgrade note has been added to
provide a record of such and a notice to users who may have not upgraded
yet.
- #### res_audiosocket: add message types for all slin sample rates
New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.
- #### taskpool: Add taskpool API, switch Stasis to using it.
The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.
### Developer Notes:
- #### chan_pjsip: Add technology-specific off-nominal hangup cause to events.
A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.
- #### ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.
- #### taskpool: Add taskpool API, switch Stasis to using it.
The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.
### Commit Authors:
- Anthony Minessale: (1)
- Bastian Triller: (1)
- Ben Ford: (2)
- Christoph Moench-Tegeder: (1)
- Gauravs456: (1)
- George Joseph: (8)
- Igor Goncharovsky: (1)
- Joshua C. Colp: (8)
- Max Grobecker: (1)
- Nathan Monfils: (1)
- Naveen Albert: (18)
- Phoneben: (2)
- Roman Pertsev: (1)
- Sean Bright: (3)
- Sven Kube: (3)
- Tinet-Mucw: (1)
## Issue and Commit Detail:
### Closed Issues:
- 781: [improvement]: Allow call by call disabling Stir/Shaken header inclusion
- 1340: [bug]: comfort noise packet corrupted
- 1419: [bug]: static code analysis issues in app_adsiprog.c
- 1422: [bug]: static code analysis issues in apps/app_externalivr.c
- 1425: [bug]: static code analysis issues in apps/app_queue.c
- 1434: [improvement]: pbx_variables: Create real channel for dialplan eval CLI command
- 1436: [improvement]: res_cliexec: Avoid unnecessary cast to char*
- 1455: [new-feature]: chan_dahdi: Add DAHDI_CHANNEL function
- 1467: [bug]: Crash in res_pjsip_refer during REFER progress teardown with PJSIP_TRANSFER_HANDLING(ari-only)
- 1478: [improvement]: Stasis threadpool -> taskpool
- 1479: [bug]: The ARI bridge play and record APIs limit audio bandwidth by forcing the slin8 format.
- 1483: [improvement]: sig_analog: Eliminate possible timeout for Last Number Redial
- 1485: [improvement]: func_scramble: Add example to XML documentation.
- 1487: [improvement]: app_dial: Allow partial seconds to be used for dial timeouts
- 1489: [improvement]: config_options.c: Improve misleading error message
- 1491: [bug]: Segfault: `channelstorage_cpp` fast lookup without lock (`get_by_name_exact`/`get_by_uniqueid`) leads to UAF during hangup
- 1493: [new-feature]: app_sf: Add post-digit timer option
- 1496: [improvement]: dsp.c: Minor fixes to debug log messages
- 1499: [new-feature]: func_math: Add function to return the digit sum
- 1501: [improvement]: codec_builtin: Fix some inaccurate quality weights.
- 1505: [improvement]: res_fax: Add XML documentation for channel variables
- 1507: [improvement]: res_tonedetect: Minor formatting issue in documentation
- 1509: [improvement]: res_fax.c — log debug error as debug, not regular log
- 1510: [new-feature]: sig_analog: Allow '#' to end the inter-digit timeout when dialing.
- 1514: [improvement]: func_channel: Allow R/W of ADSI CPE capability setting.
- 1517: [improvement]: core_unreal: Preserve ADSI capability when dialing Local channels
- 1519: [improvement]: app_dial / func_callerid: DNIS information is not propagated by Dial
- 1525: [bug]: chan_websocket: fix use of raw payload variable for string comparison in process_text_message
- 1534: [bug]: app_queue when using gosub breaks dialplan when going from 20 to 21, What's new in 21 doesn't mention it's a breaking change,
- 1535: [bug]: chan_pjsip changes SSRC on WebRTC channels, which is unsupported by some browsers
- 1536: [bug]: asterisk -rx connects to console instead of executing a command
- 1539: [bug]: safe_asterisk without TTY doesn't log to file
- 1544: [improvement]: While Receiving the MediaConnect Message Using External Media Over websocket ChannelID is Details are missing
- 1554: [bug]: safe_asterisk recurses into subdirectories of startup.d after f97361
- 1559: [improvement]: Handle TLS handshake attacks in order to resolve the issue of exceeding the maximum number of HTTPS sessions.
### Commits By Author:
- #### Anthony Minessale (1):
- Update contact information for anthm
- #### Bastian Triller (1):
- Fix some doxygen, typos and whitespace
- #### Ben Ford (2):
- rtp_engine.c: Add exception for comfort noise payload.
- app_queue.c: Fix error in Queue parameter documentation.
- #### Christoph Moench-Tegeder (1):
- Fix Endianness detection in utils.h for non-Linux
- #### George Joseph (8):
- ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
- channelstorage_cpp_map_name_id: Add read locking around retrievals.
- chan_websocket.c: Change payload references to command instead.
- taskpool: Fix some references to threadpool that should be taskpool.
- chan_pjsip: Add technology-specific off-nominal hangup cause to events.
- safe_asterisk: Fix logging and sorting issue.
- chan_pjsip: Disable SSRC change for WebRTC endpoints.
- res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
- #### Igor Goncharovsky (1):
- func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
- #### Joshua C. Colp (8):
- taskpool: Add taskpool API, switch Stasis to using it.
- taskpool: Update versions for taskpool stasis options.
- sorcery: Move from threadpool to taskpool.
- app_queue: Allow stasis message filtering to work.
- endpoints: Remove need for stasis subscription.
- devicestate: Don't publish redundant device state messages.
- pjsip: Move from threadpool to taskpool
- Revert "pjsip: Move from threadpool to taskpool"
- #### Max Grobecker (1):
- res_pjsip_geolocation: Add support for Geolocation loc-src parameter
- #### Nathan Monfils (1):
- manager.c: Fix presencestate object leak
- #### Naveen Albert (18):
- pbx_variables.c: Create real channel for "dialplan eval function".
- res_cliexec: Remove unnecessary casts to char*.
- app_adsiprog: Fix possible NULL dereference.
- chan_dahdi: Add DAHDI_CHANNEL function.
- sig_analog: Eliminate potential timeout with Last Number Redial.
- func_scramble: Add example to XML documentation.
- config_options.c: Improve misleading warning.
- dsp.c: Make minor fixes to debug log messages.
- app_dial: Allow fractional seconds for dial timeouts.
- res_fax: Add XML documentation for channel variables.
- res_tonedetect: Fix formatting of XML documentation.
- codec_builtin.c: Adjust some of the quality scores to reflect reality.
- app_sf: Add post-digit timer option to ReceiveSF.
- func_math: Add DIGIT_SUM function.
- sig_analog: Allow '#' to end the inter-digit timeout when dialing.
- core_unreal: Preserve ADSI capability when dialing Local channels.
- func_channel: Allow R/W of ADSI CPE capability setting.
- func_callerid: Document limitation of DNID fields.
- #### Roman Pertsev (1):
- res_audiosocket: fix temporarily unavailable
- #### Sean Bright (3):
- audiohook.c: Ensure correct AO2 reference is dereffed.
- app_externalivr: Prevent out-of-bounds read during argument processing.
- safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.
- #### Sven Kube (3):
- stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_..
- stasis_channels.c: Make protocol_id optional to enable blind transfer via ari
- res_audiosocket: add message types for all slin sample rates
- #### Tinet-mucw (1):
- iostream.c: Handle TLS handshake attacks in order to resolve the issue of exce..
- #### gauravs456 (1):
- chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END even..
- #### phoneben (2):
- app_queue: Add NULL pointer checks in app_queue
- res_fax.c: lower FAXOPT read warning to debug level
### Commit List:
- res_audiosocket: fix temporarily unavailable
- safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.
- res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
- Revert "pjsip: Move from threadpool to taskpool"
- chan_pjsip: Disable SSRC change for WebRTC endpoints.
- pjsip: Move from threadpool to taskpool
- safe_asterisk: Fix logging and sorting issue.
- Fix Endianness detection in utils.h for non-Linux
- app_queue.c: Fix error in Queue parameter documentation.
- devicestate: Don't publish redundant device state messages.
- chan_pjsip: Add technology-specific off-nominal hangup cause to events.
- res_audiosocket: add message types for all slin sample rates
- res_fax.c: lower FAXOPT read warning to debug level
- endpoints: Remove need for stasis subscription.
- app_queue: Allow stasis message filtering to work.
- taskpool: Fix some references to threadpool that should be taskpool.
- Update contact information for anthm
- chan_websocket.c: Change payload references to command instead.
- func_callerid: Document limitation of DNID fields.
- func_channel: Allow R/W of ADSI CPE capability setting.
- core_unreal: Preserve ADSI capability when dialing Local channels.
- func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
- sig_analog: Allow '#' to end the inter-digit timeout when dialing.
- func_math: Add DIGIT_SUM function.
- app_sf: Add post-digit timer option to ReceiveSF.
- codec_builtin.c: Adjust some of the quality scores to reflect reality.
- res_tonedetect: Fix formatting of XML documentation.
- res_fax: Add XML documentation for channel variables.
- channelstorage_cpp_map_name_id: Add read locking around retrievals.
- app_dial: Allow fractional seconds for dial timeouts.
- dsp.c: Make minor fixes to debug log messages.
- config_options.c: Improve misleading warning.
- func_scramble: Add example to XML documentation.
- sig_analog: Eliminate potential timeout with Last Number Redial.
- ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
- res_pjsip_geolocation: Add support for Geolocation loc-src parameter
- sorcery: Move from threadpool to taskpool.
- stasis_channels.c: Make protocol_id optional to enable blind transfer via ari
- Fix some doxygen, typos and whitespace
- app_queue: Add NULL pointer checks in app_queue
- app_externalivr: Prevent out-of-bounds read during argument processing.
- chan_dahdi: Add DAHDI_CHANNEL function.
- taskpool: Update versions for taskpool stasis options.
- taskpool: Add taskpool API, switch Stasis to using it.
- app_adsiprog: Fix possible NULL dereference.
- manager.c: Fix presencestate object leak
- audiohook.c: Ensure correct AO2 reference is dereffed.
- res_cliexec: Remove unnecessary casts to char*.
- rtp_engine.c: Add exception for comfort noise payload.
- pbx_variables.c: Create real channel for "dialplan eval function".
### Commit Details:
#### res_audiosocket: fix temporarily unavailable
Author: Roman Pertsev
Date: 2025-10-07
Operations on non-blocking sockets may return a resource temporarily unavailable error (EAGAIN or EWOULDBLOCK). This is not a fatal error but a normal condition indicating that the operation would block.
This patch corrects the handling of this case. Instead of incorrectly treating it as a reason to terminate the connection, the code now waits for data to arrive on the socket.
#### safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.
Author: Sean Bright
Date: 2025-10-22
* Using `==` with the POSIX sh `test` utility is UB.
* Switch back to using globs instead of using `$(find … | sort)`.
* Fix a missing redirect when checking for the OS type.
Resolves: #1554
#### res_stir_shaken: Add STIR_SHAKEN_ATTESTATION dialplan function.
Author: George Joseph
Date: 2025-10-24
Also...
* Refactored the verification datastore process so instead of having
a separate channel datastore for each verification result, there's only
one channel datastore with a vector of results.
* Refactored some log messages to include channel name and removed
some that would be redundant if a memory allocation failed.
Resolves: #781
UserNote: The STIR_SHAKEN_ATTESTATION dialplan function has been added
which will allow suppressing attestation on a call-by-call basis
regardless of the profile attached to the outgoing endpoint.
#### Revert "pjsip: Move from threadpool to taskpool"
Author: Joshua C. Colp
Date: 2025-10-27
This reverts commit bb6b76c2d8239b2665223dcbf6d507aa9aa4534e.
#### iostream.c: Handle TLS handshake attacks in order to resolve the issue of exce..
Author: Tinet-mucw
Date: 2025-10-26
The TCP three-way handshake completes, but if the server is under a TLS handshake attack, asterisk will get stuck at SSL_do_handshake().
In this case, a timeout mechanism should be set for the SSL/TLS handshake process to prevent indefinite waiting during the SSL handshake.
Resolves: #1559
#### chan_pjsip: Disable SSRC change for WebRTC endpoints.
Author: George Joseph
Date: 2025-10-21
Commit b333ee3b introduced a fix to chan_pjsip that addressed RTP issues with
blind transfers and some SBCs. Unfortunately, the fix broke some WebRTC
clients that are sensitive to SSRC changes and non-monotonic timestamps so
the fix is now disabled for endpoints with the "bundle" parameter set to true.
Resolves: #1535
#### chan_websocket: Add channel_id to MEDIA_START, DRIVER_STATUS and DTMF_END even..
Author: gauravs456
Date: 2025-10-21
Resolves: #1544
#### pjsip: Move from threadpool to taskpool
Author: Joshua C. Colp
Date: 2025-09-23
This change moves the PJSIP module from the threadpool API
to the taskpool API. PJSIP-specific implementations for
task usage have been removed and replaced with calls to
the optimized taskpool implementations instead. The need
for a pool of serializers has also been removed as
taskpool inherently provides this. The default settings
have also been changed to be more realistic for common
usage.
UpgradeNote: The threadpool_* options in pjsip.conf have now
been deprecated though they continue to be read and used.
They have been replaced with taskpool options that give greater
control over the underlying taskpool used for PJSIP. An alembic
upgrade script has been added to add these options to realtime
as well.
#### safe_asterisk: Fix logging and sorting issue.
Author: George Joseph
Date: 2025-10-17
Re-enabled "TTY=9" which was erroneously disabled as part of a recent
security fix and removed another logging "fix" that was added.
Also added a sort to the "find" that enumerates the scripts to be sourced so
they're sourced in the correct order.
Resolves: #1539
#### Fix Endianness detection in utils.h for non-Linux
Author: Christoph Moench-Tegeder
Date: 2025-10-19
Commit 43bf8a4ded7a65203b766b91eaf8331a600e9d8d introduced endian
dependend byte-swapping code in include/asterisk/utils.h, where the
endianness was detected using the __BYTE_ORDER macro. This macro
lives in endian.h, which on Linux is included implicitely (by the
network-related headers, I think), but on FreeBSD the headers are
laid out differently and we do not get __BYTE_ORDER the implicit way.
Instead, this makes the usage of endian.h explicit by including it
where we need it, and switches the BYTE_ORDER/*ENDIAN macros to the
POSIX-defined ones (see
https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/endian.h.html
for standard compliance). Additionally, this adds a compile-time check
for the endianness-logic: compilation will fail if neither big nor
little endian can be detected.
Fixes: #1536
#### app_queue.c: Fix error in Queue parameter documentation.
Author: Ben Ford
Date: 2025-10-20
When macro was removed in Asterisk 21, the parameter documentation in
code was not updated to reflect the correct numerization for gosub. It
still stated that it was the seventh parameter, but got shifted to the
sixth due to the removal of macro. This has been updated to correctly
reflect the parameter order, and a note has been added to the XML that
states this was done after the initial commit.
Fixes: #1534
UpgradeNote: As part of Asterisk 21, macros were removed from Asterisk.
This resulted in argument order changing for the Queue dialplan
application since the macro argument was removed. Upgrade notice was
missed when this was done, so this upgrade note has been added to
provide a record of such and a notice to users who may have not upgraded
yet.
#### devicestate: Don't publish redundant device state messages.
Author: Joshua C. Colp
Date: 2025-10-17
When publishing device state check the local cache for the
existing device state. If the new device state is unchanged
from the prior one, don't bother publishing the update. This
can reduce the work done by consumers of device state, such
as hints and app_queue, by not publishing a message to them.
These messages would most often occur with devices that are
seeing numerous simultaneous channels. The underlying device
state would remain as in use throughout, but an update would
be published as channels are created and hung up.
#### chan_pjsip: Add technology-specific off-nominal hangup cause to events.
Author: George Joseph
Date: 2025-10-14
Although the ISDN/Q.850/Q.931 hangup cause code is already part of the ARI
and AMI hangup and channel destroyed events, it can be helpful to know what
the actual channel technology code was if the call was unsuccessful.
For PJSIP, it's the SIP response code.
* A new "tech_hangupcause" field was added to the ast_channel structure along
with ast_channel_tech_hangupcause() and ast_channel_tech_hangupcause_set()
functions. It should only be set for off-nominal terminations.
* chan_pjsip was modified to set the tech hangup cause in the
chan_pjsip_hangup() and chan_pjsip_session_end() functions. This is a bit
tricky because these two functions aren't always called in the same order.
The channel that hangs up first will get chan_pjsip_session_end() called
first which will trigger the core to call chan_pjsip_hangup() on itself,
then call chan_pjsip_hangup() on the other channel. The other channel's
chan_pjsip_session_end() function will get called last. Unfortunately,
the other channel's HangupRequest events are sent before chan_pjsip has had a
chance to set the tech hangupcause code so the HangupRequest events for that
channel won't have the cause code set. The ChannelDestroyed and Hangup
events however will have the code set for both channels.
* A new "tech_cause" field was added to the ast_channel_snapshot_hangup
structure. This is a public structure so a bit of refactoring was needed to
preserve ABI compatibility.
* The ARI ChannelHangupRequest and ChannelDestroyed events were modified to
include the "tech_cause" parameter in the JSON for off-nominal terminations.
The parameter is suppressed for nominal termination.
* The AMI SoftHangupRequest, HangupRequest and Hangup events were modified to
include the "TechCause" parameter for off-nominal terminations. Like their ARI
counterparts, the parameter is suppressed for nominal termination.
DeveloperNote: A "tech_cause" parameter has been added to the
ChannelHangupRequest and ChannelDestroyed ARI event messages and a "TechCause"
parameter has been added to the HangupRequest, SoftHangupRequest and Hangup
AMI event messages. For chan_pjsip, these will be set to the last SIP
response status code for off-nominally terminated calls. The parameter is
suppressed for nominal termination.
#### res_audiosocket: add message types for all slin sample rates
Author: Sven Kube
Date: 2025-10-10
Extend audiosocket messages with types 0x11 - 0x18 to create asterisk
frames in slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 format, enabling the transmission of audio at a higher sample
rates. For audiosocket messages sent by Asterisk, the message kind is
determined by the format of the originating asterisk frame.
UpgradeNote: New audiosocket message types 0x11 - 0x18 has been added
for slin12, slin16, slin24, slin32, slin44, slin48, slin96, and
slin192 audio. External applications using audiosocket may need to be
updated to support these message types if the audiosocket channel is
created with one of these audio formats.
#### res_fax.c: lower FAXOPT read warning to debug level
Author: phoneben
Date: 2025-10-03
Reading ${FAXOPT()} before a fax session is common in dialplans to check fax state.
Currently this logs an error even when no fax datastore exists, creating excessive noise.
Change these messages to ast_debug(3, …) so they appear only with debug enabled.
Resolves: #1509
#### endpoints: Remove need for stasis subscription.
Author: Joshua C. Colp
Date: 2025-10-10
When an endpoint is created in the core of Asterisk a subscription
was previously created alongside it to monitor any channels being
destroyed that were related to it. This was done by receiving all
channel snapshot updates for every channel and only reacting when
it was indicated that the channel was dead.
This change removes this logic and instead provides an API call
for directly removing a channel from an endpoint. This is called
when channels are destroyed. This operation is fast, so blocking
the calling thread for a short period of time doesn't have any
noticeable impact.
#### app_queue: Allow stasis message filtering to work.
Author: Joshua C. Colp
Date: 2025-10-10
The app_queue module subscribes on a per-dialed agent basis to both
the bridge all and channel all topics to keep apprised of things going
on involving them. This subscription has associated state that must
be cleaned up when the subscription ends. This was done by setting
a default router callback that only had logic to handle the case
where the subscription ends. By using the default router callback
all filtering for the subscription was disabled, causing unrelated
messages to get published and handled by it.
This change makes it so that an explicit route is added for the
message type used for the message indicating the subscription has
ended and removes the default router callback. This allows message
filtering to occur on publishing reducing the messages to app_queue
to only those it is interested in.
#### taskpool: Fix some references to threadpool that should be taskpool.
Author: George Joseph
Date: 2025-10-10
Resolves: #1478
#### Update contact information for anthm
Author: Anthony Minessale
Date: 2025-10-10
#### chan_websocket.c: Change payload references to command instead.
Author: George Joseph
Date: 2025-10-08
Some of the tests in process_text_message() were still comparing to the
websocket message payload instead of the "command" string.
Resolves: #1525
#### func_callerid: Document limitation of DNID fields.
Author: Naveen Albert
Date: 2025-10-06
The Dial() application does not propagate DNID fields, which is counter
to the behavior of the other Caller ID fields. This behavior is likely
intentional since the use of Dial theoretically suggests a new dialed
number, but document this caveat to inform users of it.
Resolves: #1519
#### func_channel: Allow R/W of ADSI CPE capability setting.
Author: Naveen Albert
Date: 2025-10-06
Allow retrieving and setting the channel's ADSI capability from the
dialplan.
Resolves: #1514
UserNote: CHANNEL(adsicpe) can now be read or written to change
the channels' ADSI CPE capability setting.
#### core_unreal: Preserve ADSI capability when dialing Local channels.
Author: Naveen Albert
Date: 2025-10-06
Dial() already preserves the ADSI capability by copying it to the new
channel, but since Local channel pairs consist of two channels, we
also need to copy the capability to the second channel.
Resolves: #1517
#### func_hangupcause.c: Add access to Reason headers via HANGUPCAUSE()
Author: Igor Goncharovsky
Date: 2025-09-04
As soon as SIP call may end with several Reason headers, we
want to make all of them available through the HAGUPCAUSE() function.
This implementation uses the same ao2 hash for cause codes storage
and adds a flag to make difference between last processed sip
message and content of reason headers.
UserNote: Added a new option to HANGUPCAUSE to access additional
information about hangup reason. Reason headers from pjsip
could be read using 'tech_extended' cause type.
#### sig_analog: Allow '#' to end the inter-digit timeout when dialing.
Author: Naveen Albert
Date: 2025-10-03
It is customary to allow # to terminate digit collection immediately
when there would normally be a timeout. However, currently, users are
forced to wait for the timeout to expire when dialing numbers that
are prefixes of other valid matches, and there is no way to end the
timeout early. Customarily, # terminates the timeout, but at the moment,
this is just rejected unless there happens to be a matching extension
ending in #.
Allow # to terminate the timeout in cases where there is no dialplan
match. This ensures that the dialplan is always respected, but if a
valid extension has been dialed that happens to prefix other valid
matches, # can be used to dial it immediately.
Resolves: #1510
#### func_math: Add DIGIT_SUM function.
Author: Naveen Albert
Date: 2025-10-01
Add a function (DIGIT_SUM) which returns the digit sum of a number.
Resolves: #1499
UserNote: The DIGIT_SUM function can be used to return the digit sum of
a number.
#### app_sf: Add post-digit timer option to ReceiveSF.
Author: Naveen Albert
Date: 2025-10-01
Add a sorely needed option to set a timeout between digits, rather than
for receiving the entire number. This is needed if the number of digits
being sent is unknown by the receiver in advance. Previously, we had
to wait for the entire timer to expire.
Resolves: #1493
UserNote: The 't' option for ReceiveSF now allows for a timer since
the last digit received, in addition to the number-wide timeout.
#### codec_builtin.c: Adjust some of the quality scores to reflect reality.
Author: Naveen Albert
Date: 2025-10-02
Among the lower-quality voice codecs, some of the quality scores did
not make sense relative to each other.
For instance, quality-wise, G.729 > G.723 > PLC10.
However, current scores do not uphold these relationships.
Tweak the scores slightly to reflect more accurate relationships.
Resolves: #1501
#### res_tonedetect: Fix formatting of XML documentation.
Author: Naveen Albert
Date: 2025-10-02
Fix the indentation in the documentation for the variable list.
Resolves: #1507
#### res_fax: Add XML documentation for channel variables.
Author: Naveen Albert
Date: 2025-10-02
Document the channel variables currently set by SendFAX and ReceiveFAX.
Resolves: #1505
#### channelstorage_cpp_map_name_id: Add read locking around retrievals.
Author: George Joseph
Date: 2025-10-01
When we retrieve a channel from a C++ map, we actually get back a wrapper
object that points to the channel then right after we retrieve it, we bump its
reference count. There's a tiny chance however that between those two
statements a delete and/or unref might happen which would cause the wrapper
object or the channel itself to become invalid resulting in a SEGV. To avoid
this we now perform a read lock on the driver around those statements.
Resolves: #1491
#### app_dial: Allow fractional seconds for dial timeouts.
Author: Naveen Albert
Date: 2025-09-30
Even though Dial() internally uses milliseconds for its dial timeouts,
this capability has been mostly obscured from users as the argument is
only parsed as an integer, thus forcing the use of whole seconds for
timeouts.
Parse it as a decimal instead so that timeouts can now truly have
millisecond precision.
Resolves: #1487
UserNote: The answer and progress dial timeouts now have millisecond
precision, instead of having to be whole numbers.
#### dsp.c: Make minor fixes to debug log messages.
Author: Naveen Albert
Date: 2025-10-01
Commit dc8e3eeaaf094a3d16991289934093d5e7127680 improved the debug log
messages in dsp.c. This makes two minor corrections to it:
* Properly guard an added log statement in a conditional.
* Don't add one to the hit count if there was no hit (however, we do
still want to do this for the case where this is one).
Resolves: #1496
#### config_options.c: Improve misleading warning.
Author: Naveen Albert
Date: 2025-09-30
When running "config show help <module>", if no XML documentation exists
for the specified module, "Module <module> not found." is returned,
which is misleading if the module is loaded but simply has no XML
documentation for its config. Improve the message to clarify that the
module may simply have no config documentation.
Resolves: #1489
#### func_scramble: Add example to XML documentation.
Author: Naveen Albert
Date: 2025-09-29
The previous lack of an example made it ambiguous if the arguments went
inside the function arguments or were part of the right-hand value.
Resolves: #1485
#### sig_analog: Eliminate potential timeout with Last Number Redial.
Author: Naveen Albert
Date: 2025-09-29
If Last Number Redial is used to redial, ensure that we do not wait
for further digits. This was possible if the number that was last
dialed is a prefix of another possible dialplan match. Since all we
did is copy the number into the extension buffer, if other matches
are now possible, there would thus be a timeout before the call went
through. We now complete redialed calls immediaetly in all cases.
Resolves: #1483
#### ARI: The bridges play and record APIs now handle sample rates > 8K correctly.
Author: George Joseph
Date: 2025-09-25
The bridge play and record APIs were forcing the Announcer/Recorder channel
to slin8 which meant that if you played or recorded audio with a sample
rate > 8K, it was downsampled to 8K limiting the bandwidth.
* The /bridges/play REST APIs have a new "announcer_format" parameter that
allows the caller to explicitly set the format on the "Announcer" channel
through which the audio is played into the bridge. If not specified, the
default depends on how many channels are currently in the bridge. If
a single channel is in the bridge, then the Announcer channel's format
will be set to the same as that channel's. If multiple channels are in the
bridge, the channels will be scanned to find the one with the highest
sample rate and the Announcer channel's format will be set to the slin
format that has an equal to or greater than sample rate.
* The /bridges/record REST API has a new "recorder_format" parameter that
allows the caller to explicitly set the format on the "Recorder" channel
from which audio is retrieved to write to the file. If not specified,
the Recorder channel's format will be set to the format that was requested
to save the audio in.
Resolves: #1479
DeveloperNote: The ARI /bridges/play and /bridges/record REST APIs have new
parameters that allow the caller to specify the format to be used on the
"Announcer" and "Recorder" channels respecitvely.
#### res_pjsip_geolocation: Add support for Geolocation loc-src parameter
Author: Max Grobecker
Date: 2025-09-21
This adds support for the Geolocation 'loc-src' parameter to res_pjsip_geolocation.
The already existing config option 'location_source` in res_geolocation is documented to add a 'loc-src' parameter containing a user-defined FQDN to the 'Geolocation:' header,
but that option had no effect as it was not implemented by res_pjsip_geolocation.
If the `location_source` configuration option is not set or invalid, that parameter will not be added (this is already checked by res_geolocation).
This commits adds already documented functionality.
#### sorcery: Move from threadpool to taskpool.
Author: Joshua C. Colp
Date: 2025-09-23
This change moves observer invocation from the use of
a threadpool to a taskpool. The taskpool options have also
been adjusted to ensure that at least one taskprocessor
remains available at all times.
#### stasis_channels.c: Make protocol_id optional to enable blind transfer via ari
Author: Sven Kube
Date: 2025-09-22
When handling SIP transfers via ARI, there is no protocol_id in case of
a blind transfer.
Resolves: #1467
#### Fix some doxygen, typos and whitespace
Author: Bastian Triller
Date: 2025-09-21
#### stasis_channels.c: Add null check for referred_by in ast_ari_transfer_message_..
Author: Sven Kube
Date: 2025-09-18
When handling SIP transfers via ARI, the `referred_by` field in
`transfer_ari_state` may be null, since SIP REFER requests are not
required to include a `Referred-By` header. Without this check, a null
value caused the transfer to fail and triggered a NOTIFY with a 500
Internal Server Error.
#### app_queue: Add NULL pointer checks in app_queue
Author: phoneben
Date: 2025-09-11
Add NULL check for word_list before calling word_in_list()
Add NULL checks for channel snapshots from ast_multi_channel_blob_get_channel()
Resolves: #1425
#### app_externalivr: Prevent out-of-bounds read during argument processing.
Author: Sean Bright
Date: 2025-09-17
Resolves: #1422
#### chan_dahdi: Add DAHDI_CHANNEL function.
Author: Naveen Albert
Date: 2025-09-11
Add a dialplan function that can be used to get/set properties of
DAHDI channels (as opposed to Asterisk channels). This exposes
properties that were not previously available, allowing for certain
operations to now be performed in the dialplan.
Resolves: #1455
UserNote: The DAHDI_CHANNEL function allows for getting/setting
certain properties about DAHDI channels from the dialplan.
#### taskpool: Update versions for taskpool stasis options.
Author: Joshua C. Colp
Date: 2025-09-16
#### taskpool: Add taskpool API, switch Stasis to using it.
Author: Joshua C. Colp
Date: 2025-08-06
This change introduces a new API called taskpool. This is a pool
of taskprocessors. It provides the following functionality:
1. Task pushing to a pool of taskprocessors
2. Synchronous tasks
3. Serializers for execution ordering of tasks
4. Growing/shrinking of number of taskprocessors in pool
This functionality already exists through the combination of
threadpool+taskprocessors but through investigating I determined
that this carries substantial overhead for short to medium duration
tasks. The threadpool uses a single queue of work, and for management
of threads it involves additional tasks.
I wrote taskpool to eliminate the extra overhead and management
as much as possible. Instead of a single queue of work each
taskprocessor has its own queue and at push time a selector chooses
the taskprocessor to queue the task to. Each taskprocessor also
has its own thread like normal. This spreads out the tasks immediately
and reduces contention on shared resources.
Using the included efficiency tests the number of tasks that can be
executed per second in a taskpool is 6-12 times more than an equivalent
threadpool+taskprocessor setup.
Stasis has been moved over to using this new API as it is a heavy consumer
of threadpool+taskprocessors and produces a lot of tasks.
UpgradeNote: The threadpool_* options in stasis.conf have now been deprecated
though they continue to be read and used. They have been replaced with taskpool
options that give greater control over the underlying taskpool used for stasis.
DeveloperNote: The taskpool API has been added for common usage of a
pool of taskprocessors. It is suggested to use this API instead of the
threadpool+taskprocessor approach.
#### app_adsiprog: Fix possible NULL dereference.
Author: Naveen Albert
Date: 2025-09-10
get_token can return NULL, but process_token uses this result without
checking for NULL; as elsewhere, check for a NULL result to avoid
possible NULL dereference.
Resolves: #1419
#### manager.c: Fix presencestate object leak
Author: Nathan Monfils
Date: 2025-09-08
ast_presence_state allocates subtype and message. We straightforwardly
need to clean those up.
#### audiohook.c: Ensure correct AO2 reference is dereffed.
Author: Sean Bright
Date: 2025-09-10
Part of #1440.
#### res_cliexec: Remove unnecessary casts to char*.
Author: Naveen Albert
Date: 2025-09-09
Resolves: #1436
#### rtp_engine.c: Add exception for comfort noise payload.
Author: Ben Ford
Date: 2025-09-09
In a previous commit, a change was made to
ast_rtp_codecs_payload_code_tx_sample_rate to check for differing sample
rates. This ended up returning an invalid payload int for comfort noise.
A check has been added that returns early if the payload is in fact
supposed to be comfort noise.
Fixes: #1340
#### pbx_variables.c: Create real channel for "dialplan eval function".
Author: Naveen Albert
Date: 2025-09-09
"dialplan eval function" has been using a dummy channel for function
evaluation, much like many of the unit tests. However, sometimes, this
can cause issues for functions that are not expecting dummy channels.
As an example, ast_channel_tech(chan) is NULL on such channels, and
ast_channel_tech(chan)->type consequently results in a NULL dereference.
Normally, functions do not worry about this since channels executing
dialplan aren't dummy channels.
While some functions are better about checking for these sorts of edge
cases, use a real channel with a dummy technology to make this CLI
command inherently safe for any dialplan function that could be evaluated
from the CLI.
Resolves: #1434

View File

@@ -1,4 +1,4 @@
<html><head><title>Readme for asterisk-22.6.0</title></head><body>
<html><head><title>Readme for asterisk-22.7.0-rc1</title></head><body>
<h1>The Asterisk(R) Open Source PBX</h1>
<pre><code>By Mark Spencer &lt;markster@digium.com&gt; and the Asterisk.org developer community.
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
@@ -37,7 +37,7 @@ hardware.</p>
<p>If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.</p>
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
<p><a href="ChangeLogs/ChangeLog-22.6.0.html">Change Logs</a></p>
<p><a href="ChangeLogs/ChangeLog-22.7.0-rc1.html">Change Logs</a></p>
<!-- END-CHANGELOGS -->
<h3>NEW INSTALLATIONS</h3>

View File

@@ -55,7 +55,7 @@ If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
[Change Logs](ChangeLogs/ChangeLog-22.6.0.html)
[Change Logs](ChangeLogs/ChangeLog-22.7.0-rc1.html)
<!-- END-CHANGELOGS -->
### NEW INSTALLATIONS