mirror of https://github.com/asterisk/asterisk
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
814 lines
38 KiB
814 lines
38 KiB
<html><head><title>ChangeLog for asterisk-23.0.0-rc1</title></head><body>
|
|
<h2>Change Log for Release asterisk-23.0.0-rc1</h2>
|
|
<h3>Links:</h3>
|
|
<ul>
|
|
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-23.0.0-rc1.html">Full ChangeLog</a> </li>
|
|
<li><a href="https://github.com/asterisk/asterisk/compare/23.0.0-pre1...23.0.0-rc1">GitHub Diff</a> </li>
|
|
<li><a href="https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-23.0.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: 41</li>
|
|
<li>Commit Authors: 13</li>
|
|
<li>Issues Resolved: 32</li>
|
|
<li>Security Advisories Resolved: 1</li>
|
|
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-64qc-9x89-rx5j">GHSA-64qc-9x89-rx5j</a>: A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash</li>
|
|
</ul>
|
|
<h3>User Notes:</h3>
|
|
<ul>
|
|
<li>
|
|
<h4>app_queue.c: Add new global 'log_unpause_on_reason_change'</h4>
|
|
<p>Add new global option 'log_unpause_on_reason_change' that
|
|
is default disabled. When enabled cause addition of UNPAUSE event on
|
|
every re-PAUSE with reason changed.</p>
|
|
</li>
|
|
<li>
|
|
<h4>pbx_builtins: Allow custom tone for WaitExten.</h4>
|
|
<p>The tone used while waiting for digits in WaitExten
|
|
can now be overridden by specifying an argument for the 'd'
|
|
option.</p>
|
|
</li>
|
|
<li>
|
|
<h4>res_tonedetect: Add option for TONE_DETECT detection to auto stop.</h4>
|
|
<p>The 'e' option for TONE_DETECT now allows detection to
|
|
be disabled automatically once the desired number of matches have
|
|
been fulfilled, which can help prevent race conditions in the
|
|
dialplan, since TONE_DETECT does not need to be disabled after
|
|
a hit.</p>
|
|
</li>
|
|
<li>
|
|
<h4>sorcery: Prevent duplicate objects and ensure missing objects are created on u..</h4>
|
|
<p>Users relying on Sorcery multiple writable backends configurations
|
|
(e.g., astdb + realtime) may now enable update_or_create_on_update_miss = yes
|
|
in sorcery.conf to ensure missing objects are recreated after temporary backend
|
|
failures. Default behavior remains unchanged unless explicitly enabled.</p>
|
|
</li>
|
|
<li>
|
|
<h4>chan_websocket: Allow additional URI parameters to be added to the outgoing URI.</h4>
|
|
<p>A new WebSocket channel driver option <code>v</code> has been added to the
|
|
Dial application that allows you to specify additional URI parameters on
|
|
outgoing connections. Run <code>core show application Dial</code> from the Asterisk CLI
|
|
to see how to use it.</p>
|
|
</li>
|
|
<li>
|
|
<h4>app_chanspy: Add option to not automatically answer channel.</h4>
|
|
<p>ChanSpy and ExtenSpy can now be configured to not
|
|
automatically answer the channel by using the 'N' option.</p>
|
|
</li>
|
|
</ul>
|
|
<h3>Upgrade Notes:</h3>
|
|
<ul>
|
|
<li>
|
|
<h4>config.c Make ast_variable_update update last match.</h4>
|
|
<p>Config variables, when set/updated, such as via AMI,
|
|
will now have the corresponding setting updated, even if their
|
|
sections inherit from template sections.</p>
|
|
</li>
|
|
<li>
|
|
<h4>config.c: Make ast_variable_retrieve return last match.</h4>
|
|
<p>Config variables retrieved explicitly by name now return
|
|
the most recently overriding value as opposed to the base value (e.g.
|
|
from a template). This is equivalent to retrieving a config setting
|
|
using the -1 index to the AST_CONFIG function. The major implication of
|
|
this is that modules processing configs by explicitly retrieving variables
|
|
by name will now get the effective value of a variable as overridden in
|
|
a config rather than the first-set value (from a template), which is
|
|
consistent with how other modules load config settings.</p>
|
|
</li>
|
|
<li>
|
|
<h4>users.conf: Remove deprecated users.conf integration.</h4>
|
|
<p>users.conf has been removed and all channel drivers must
|
|
be configured using their specific configuration files. The functionality
|
|
previously in users.conf for res_phoneprov is now in phoneprov_users.conf.</p>
|
|
</li>
|
|
<li>
|
|
<h4>res_agi: Remove deprecated DeadAGI application.</h4>
|
|
<p>The DeadAGI application, which was
|
|
deprecated in Asterisk 15, has now been removed.
|
|
The same functionality is available in the AGI app.</p>
|
|
</li>
|
|
<li>
|
|
<h4>res_musiconhold: Remove options that were deprecated in Asterisk 14.</h4>
|
|
<p>The deprecated random and application=r options have
|
|
been removed; use sort=random instead.</p>
|
|
</li>
|
|
<li>
|
|
<h4>app_voicemail: Remove deprecated options.</h4>
|
|
<p>The deprecated maxmessage and minmessage options
|
|
have been removed; use maxsecs and minsecs instead.
|
|
The deprecated 'cz' language has also been removed; use 'cs' instead.</p>
|
|
</li>
|
|
<li>
|
|
<h4>app_queue: Remove redundant/deprecated function.</h4>
|
|
<p>The deprecated QUEUE_MEMBER_COUNT function
|
|
has been removed; use QUEUE_MEMBER(<queue>,logged) instead.</p>
|
|
</li>
|
|
<li>
|
|
<h4>cli.c: Remove deprecated and redundant CLI command.</h4>
|
|
<p>The deprecated "no debug channel" command has
|
|
now been removed; use "core set debug channel" instead.</p>
|
|
</li>
|
|
<li>
|
|
<h4>logger.c: Remove deprecated/redundant configuration option.</h4>
|
|
<p>The deprecated rotatetimestamp option has been removed.
|
|
Use rotatestrategy instead.</p>
|
|
</li>
|
|
<li>
|
|
<h4>func_dialplan: Remove deprecated/redundant function.</h4>
|
|
<p>The deprecated VALID_EXTEN function has been removed.
|
|
Use DIALPLAN_EXISTS instead.</p>
|
|
</li>
|
|
</ul>
|
|
<h3>Developer Notes:</h3>
|
|
<ul>
|
|
<li>
|
|
<h4>ARI: Add command to indicate progress to a channel</h4>
|
|
A new ARI endpoint is available at <code>/channels/{channelId}/progress</code> to indicate progress to a channel.</li>
|
|
</ul>
|
|
<h3>Commit Authors:</h3>
|
|
<ul>
|
|
<li>Alexei Gradinari: (1)</li>
|
|
<li>Alexey Khabulyak: (1)</li>
|
|
<li>Artem Umerov: (1)</li>
|
|
<li>Ben Ford: (2)</li>
|
|
<li>George Joseph: (4)</li>
|
|
<li>Igor Goncharovsky: (2)</li>
|
|
<li>Joe Garlick: (1)</li>
|
|
<li>Jose Lopes: (1)</li>
|
|
<li>Mike Bradeen: (1)</li>
|
|
<li>Naveen Albert: (23)</li>
|
|
<li>Sean Bright: (2)</li>
|
|
<li>Stuart Henderson: (1)</li>
|
|
<li>Sven Kube: (1)</li>
|
|
</ul>
|
|
<h2>Issue and Commit Detail:</h2>
|
|
<h3>Closed Issues:</h3>
|
|
<ul>
|
|
<li>!GHSA-64qc-9x89-rx5j: A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash</li>
|
|
<li>244: [bug]: config.c: Template inheritance is incorrect for ast_variable_retrieve</li>
|
|
<li>258: [deprecation]: Remove deprecated DeadAGI application.</li>
|
|
<li>401: [bug]: app_dial: Answer Gosub option passthrough regression</li>
|
|
<li>960: [bug]: config.c: Template inheritance is not respected by ast_variable_update</li>
|
|
<li>1147: [bug]: Commit 3cab4e7a to config.c causes segfaults and spinloops in UpdateConfig mgr action</li>
|
|
<li>1222: [bug]: func_callerid: ANI2 is not always formatted as two digits</li>
|
|
<li>1260: [bug]: Asterisk sends RTP audio stream before ICE/DTLS completes</li>
|
|
<li>1289: [bug]: sorcery - duplicate objects from multiple backends and backend divergence on update</li>
|
|
<li>1292: [improvement]: Remove deprecated users.conf</li>
|
|
<li>1296: [improvement]: res_musiconhold: Remove deprecated options</li>
|
|
<li>1298: [improvement]: app_voicemail: Remove deprecated options</li>
|
|
<li>1327: [bug]: res_stasis_device_state: can't delete ARI Devicestate after asterisk restart</li>
|
|
<li>1341: [improvement]: app_queue: Remove deprecated QUEUE_MEMBER_COUNT function</li>
|
|
<li>1343: [improvement]: cli.c: Remove deprecated/redundant CLI command.</li>
|
|
<li>1345: [improvement]: logger.c: Remove deprecated/redundant config option</li>
|
|
<li>1347: [improvement]: func_dialplan: Remove deprecated/redundant function</li>
|
|
<li>1352: [improvement]: Websocket channel with custom URI</li>
|
|
<li>1358: [new-feature]: app_chanspy: Add option to not automatically answer channel</li>
|
|
<li>1364: [bug]: bridge.c: BRIDGE_NOANSWER not always obeyed</li>
|
|
<li>1366: [improvement]: func_frame_drop: Handle allocation failure properly</li>
|
|
<li>1369: [bug]: test_res_prometheus: Compilation failure in devmode due to curlopts not using long type</li>
|
|
<li>1371: [improvement]: func_frame_drop: Add debug messages for frames that can be dropped</li>
|
|
<li>1375: [improvement]: dsp.c: Improve logging in tone_detect().</li>
|
|
<li>1378: [bug]: chan_dahdi: dialmode feature is not properly reset between calls</li>
|
|
<li>1380: [bug]: sig_analog: Segfault due to calling strcmp on NULL</li>
|
|
<li>1384: [bug]: chan_websocket: asterisk crashes on hangup after STOP_MEDIA_BUFFERING command with id</li>
|
|
<li>1386: [bug]: enabling announceposition_only_up prevents any queue position announcements</li>
|
|
<li>1390: [improvement]: res_tonedetect: Add option to automatically end detection in TONE_DETECT</li>
|
|
<li>1394: [improvement]: sig_analog: Skip Caller ID spill if Caller ID is disabled</li>
|
|
<li>1396: [new-feature]: pbx_builtins: Make tone option for WaitExten configurable</li>
|
|
<li>1401: [bug]: app_waitfornoise timeout is always less then configured because of time() usage</li>
|
|
<li>ASTERISK-30370: config: Template inheritance is incorrect for ast_variable_retrieve</li>
|
|
</ul>
|
|
<h3>Commits By Author:</h3>
|
|
<ul>
|
|
<li>
|
|
<h4>Alexei Gradinari (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>sorcery: Prevent duplicate objects and ensure missing objects are created on u..</p>
|
|
</li>
|
|
<li>
|
|
<h4>Alexey Khabulyak (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>pbx_lua.c: segfault when pass null data to term_color function</p>
|
|
</li>
|
|
<li>
|
|
<h4>Artem Umerov (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>Fix missing ast_test_flag64 in extconf.c</p>
|
|
</li>
|
|
<li>
|
|
<h4>Ben Ford (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>res_rtp_asterisk: Don't send RTP before DTLS has negotiated.</p>
|
|
</li>
|
|
<li>
|
|
<h4>George Joseph (4):</h4>
|
|
</li>
|
|
<li>xmldoc.c: Fix rendering of CLI output.</li>
|
|
<li>chan_websocket: Fix buffer overrun when processing TEXT websocket frames.</li>
|
|
<li>chan_websocket: Allow additional URI parameters to be added to the outgoing URI.</li>
|
|
<li>
|
|
<p>res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Igor Goncharovsky (2):</h4>
|
|
</li>
|
|
<li>app_waitforsilence.c: Use milliseconds to calculate timeout time</li>
|
|
<li>
|
|
<p>app_queue.c: Add new global 'log_unpause_on_reason_change'</p>
|
|
</li>
|
|
<li>
|
|
<h4>Joe Garlick (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>chan_websocket.c: Add DTMF messages</p>
|
|
</li>
|
|
<li>
|
|
<h4>Jose Lopes (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>res_stasis_device_state: Fix delete ARI Devicestates after asterisk restart.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Naveen Albert (11):</h4>
|
|
</li>
|
|
<li>bridge.c: Obey BRIDGE_NOANSWER variable to skip answering channel.</li>
|
|
<li>func_frame_drop: Handle allocation failure properly.</li>
|
|
<li>test_res_prometheus: Fix compilation failure on Debian 13.</li>
|
|
<li>func_frame_drop: Add debug messages for dropped frames.</li>
|
|
<li>app_chanspy: Add option to not automatically answer channel.</li>
|
|
<li>dsp.c: Improve debug logging in tone_detect().</li>
|
|
<li>sig_analog: Fix SEGV due to calling strcmp on NULL.</li>
|
|
<li>chan_dahdi: Fix erroneously persistent dialmode.</li>
|
|
<li>sig_analog: Skip Caller ID spill if usecallerid=no.</li>
|
|
<li>res_tonedetect: Add option for TONE_DETECT detection to auto stop.</li>
|
|
<li>
|
|
<p>pbx_builtins: Allow custom tone for WaitExten.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Stuart Henderson (1):</h4>
|
|
</li>
|
|
<li>
|
|
<p>app_queue: fix comparison for announce-position-only-up</p>
|
|
</li>
|
|
<li>
|
|
<h4>Sven Kube (1):</h4>
|
|
</li>
|
|
<li>ARI: Add command to indicate progress to a channel</li>
|
|
</ul>
|
|
<h3>Commit List:</h3>
|
|
<ul>
|
|
<li>Prepare for Asterisk 23</li>
|
|
<li>config.c Make ast_variable_update update last match.</li>
|
|
<li>config.c: Make ast_variable_retrieve return last match.</li>
|
|
<li>utils: Remove libdb and astdb conversion scripts.</li>
|
|
<li>config.c: Fix inconsistent pointer logic in ast_variable_update.</li>
|
|
<li>channel: Deprecate <code>ast_moh_cleanup(...)</code>.</li>
|
|
<li>func_callerid: Always format ANI2 as two digits.</li>
|
|
<li>users.conf: Remove deprecated users.conf integration.</li>
|
|
<li>res_agi: Remove deprecated DeadAGI application.</li>
|
|
<li>res_musiconhold: Remove options that were deprecated in Asterisk 14.</li>
|
|
<li>app_voicemail: Remove deprecated options.</li>
|
|
<li>app_queue: Remove redundant/deprecated function.</li>
|
|
<li>cli.c: Remove deprecated and redundant CLI command.</li>
|
|
<li>logger.c: Remove deprecated/redundant configuration option.</li>
|
|
<li>func_dialplan: Remove deprecated/redundant function.</li>
|
|
<li>Update version for Asterisk 23</li>
|
|
<li>chan_websocket.c: Add DTMF messages</li>
|
|
<li>app_queue.c: Add new global 'log_unpause_on_reason_change'</li>
|
|
<li>app_waitforsilence.c: Use milliseconds to calculate timeout time</li>
|
|
<li>res_rtp_asterisk: Don't send RTP before DTLS has negotiated.</li>
|
|
<li>Fix missing ast_test_flag64 in extconf.c</li>
|
|
<li>pbx_builtins: Allow custom tone for WaitExten.</li>
|
|
<li>res_tonedetect: Add option for TONE_DETECT detection to auto stop.</li>
|
|
<li>app_queue: fix comparison for announce-position-only-up</li>
|
|
<li>res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.</li>
|
|
<li>sig_analog: Skip Caller ID spill if usecallerid=no.</li>
|
|
<li>chan_dahdi: Fix erroneously persistent dialmode.</li>
|
|
<li>chan_websocket: Fix buffer overrun when processing TEXT websocket frames.</li>
|
|
<li>sig_analog: Fix SEGV due to calling strcmp on NULL.</li>
|
|
<li>ARI: Add command to indicate progress to a channel</li>
|
|
<li>dsp.c: Improve debug logging in tone_detect().</li>
|
|
<li>res_stasis_device_state: Fix delete ARI Devicestates after asterisk restart.</li>
|
|
<li>app_chanspy: Add option to not automatically answer channel.</li>
|
|
<li>xmldoc.c: Fix rendering of CLI output.</li>
|
|
<li>func_frame_drop: Add debug messages for dropped frames.</li>
|
|
<li>test_res_prometheus: Fix compilation failure on Debian 13.</li>
|
|
<li>func_frame_drop: Handle allocation failure properly.</li>
|
|
<li>pbx_lua.c: segfault when pass null data to term_color function</li>
|
|
<li>bridge.c: Obey BRIDGE_NOANSWER variable to skip answering channel.</li>
|
|
</ul>
|
|
<h3>Commit Details:</h3>
|
|
<h4>Prepare for Asterisk 23</h4>
|
|
<p>Author: Mike Bradeen
|
|
Date: 2024-08-14</p>
|
|
<h4>config.c Make ast_variable_update update last match.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2024-10-23</p>
|
|
<p>ast_variable_update currently sets the first match for a variable, as
|
|
opposed to the last one. This issue is complementary to that raised
|
|
in #244.</p>
|
|
<p>This is incorrect and results in the wrong (or no) action being taken
|
|
in cases where a section inherits from a template section. When the
|
|
traversal occurs to update the setting, the existing code erroneously
|
|
would use the first of possibly multiple matches in its update logic,
|
|
which is wrong. Now, explicitly use the last match in the traversal,
|
|
which will ensure that the actual setting is updated properly, and
|
|
not skipped or ignored because a template from which the setting's
|
|
section inherits was used for comparison.</p>
|
|
<p>Resolves: #960</p>
|
|
<p>UpgradeNote: Config variables, when set/updated, such as via AMI,
|
|
will now have the corresponding setting updated, even if their
|
|
sections inherit from template sections.</p>
|
|
<h4>config.c: Make ast_variable_retrieve return last match.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2023-08-09</p>
|
|
<p>ast_variable_retrieve currently returns the first match
|
|
for a variable, as opposed to the last one. This is problematic
|
|
because modules that load config settings by explicitly
|
|
calling ast_variable_retrieve on a variable name (as opposed
|
|
to iterating through all the directives as specified) will
|
|
end up taking the first specified value, such as the default
|
|
value from the template rather than the actual effective value
|
|
in an individual config section, leading to the wrong config.</p>
|
|
<p>This fixes this by making ast_variable_retrieve return the last
|
|
match, or the most recently overridden one, as the effective setting.
|
|
This is similar to what the -1 index in the AST_CONFIG function does.</p>
|
|
<p>There is another function, ast_variable_find_last_in_list, that does
|
|
something similar. However, it's a slightly different API, and it
|
|
sees virtually no usage in Asterisk. ast_variable_retrieve is what
|
|
most things use so this is currently the relevant point of breakage.</p>
|
|
<p>In practice, this is unlikely to cause any breakage, since there
|
|
would be no logical reason to use an inherited value rather than
|
|
an explicitly overridden value when loading a config.</p>
|
|
<p>ASTERISK-30370 #close</p>
|
|
<p>Resolves: #244</p>
|
|
<p>UpgradeNote: Config variables retrieved explicitly by name now return
|
|
the most recently overriding value as opposed to the base value (e.g.
|
|
from a template). This is equivalent to retrieving a config setting
|
|
using the -1 index to the AST_CONFIG function. The major implication of
|
|
this is that modules processing configs by explicitly retrieving variables
|
|
by name will now get the effective value of a variable as overridden in
|
|
a config rather than the first-set value (from a template), which is
|
|
consistent with how other modules load config settings.</p>
|
|
<h4>utils: Remove libdb and astdb conversion scripts.</h4>
|
|
<p>Author: Sean Bright
|
|
Date: 2025-01-29</p>
|
|
<p>These were included with Asterisk 10 when we switched astdb from libdb
|
|
to sqlite3.</p>
|
|
<h4>config.c: Fix inconsistent pointer logic in ast_variable_update.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-03-06</p>
|
|
<p>Commit 3cab4e7ab4a3ae483430d5f5e8fa167d02a8128c introduced a
|
|
regression by causing the wrong pointers to be used in certain
|
|
(more complex) cases. We now take care to ensure the exact
|
|
same pointers are used as before that commit, and simplify
|
|
by eliminating the unnecessary second for loop.</p>
|
|
<p>Resolves: #1147</p>
|
|
<h4>channel: Deprecate <code>ast_moh_cleanup(...)</code>.</h4>
|
|
<p>Author: Sean Bright
|
|
Date: 2025-04-08</p>
|
|
<p>We don't want anyone calling it but the channel destructor.</p>
|
|
<h4>func_callerid: Always format ANI2 as two digits.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-04-26</p>
|
|
<p>ANI II is always supposed to be formatted as two digits,
|
|
so zero pad when formatting it if necessary.</p>
|
|
<p>Resolves: #1222</p>
|
|
<h4>users.conf: Remove deprecated users.conf integration.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-07-09</p>
|
|
<p>users.conf was deprecated in Asterisk 21 and is now being removed
|
|
for Asterisk 23, in accordance with the Asterisk deprecation policy.</p>
|
|
<p>This consists of:
|
|
* Removing integration with app_directory, app_voicemail, chan_dahdi,
|
|
chan_iax2, and AMI.
|
|
* users.conf was also partially used for res_phoneprov, and this remaining
|
|
functionality is consolidated to a separate phoneprov_users.conf,
|
|
used only by res_phoneprov.</p>
|
|
<p>Resolves: #1292</p>
|
|
<p>UpgradeNote: users.conf has been removed and all channel drivers must
|
|
be configured using their specific configuration files. The functionality
|
|
previously in users.conf for res_phoneprov is now in phoneprov_users.conf.</p>
|
|
<h4>res_agi: Remove deprecated DeadAGI application.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2023-08-11</p>
|
|
<p>DeadAGI was deprecated 7 years ago, in Asterisk 15,
|
|
as it duplicates functionality in the AGI app.
|
|
This removes the application.</p>
|
|
<p>Resolves: #258</p>
|
|
<p>UpgradeNote: The DeadAGI application, which was
|
|
deprecated in Asterisk 15, has now been removed.
|
|
The same functionality is available in the AGI app.</p>
|
|
<h4>res_musiconhold: Remove options that were deprecated in Asterisk 14.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-07-09</p>
|
|
<p>Commit 9c1f34c7e904b26bb550f426020635894cb805ac added dedicated options
|
|
for random sorting functionality and deprecated older options that
|
|
now duplicated these capabilities. Remove these deprecated options.</p>
|
|
<p>Resolves: #1296</p>
|
|
<p>UpgradeNote: The deprecated random and application=r options have
|
|
been removed; use sort=random instead.</p>
|
|
<h4>app_voicemail: Remove deprecated options.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-07-10</p>
|
|
<p>Remove the deprecated maxmessage and minmessage options,
|
|
which have been superseded by maxsecs and minsecs since 1.6.
|
|
Also remove the deprecated 'cz' language option (deprecated
|
|
since 1.8.)</p>
|
|
<p>Resolves: #1298</p>
|
|
<p>UpgradeNote: The deprecated maxmessage and minmessage options
|
|
have been removed; use maxsecs and minsecs instead.
|
|
The deprecated 'cz' language has also been removed; use 'cs' instead.</p>
|
|
<h4>app_queue: Remove redundant/deprecated function.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-07</p>
|
|
<p>QUEUE_MEMBER_COUNT has been deprecated since at least 1.6,
|
|
for fully duplicating functionality available in the
|
|
QUEUE_MEMBER function; remove it now.</p>
|
|
<p>Resolves: #1341</p>
|
|
<p>UpgradeNote: The deprecated QUEUE_MEMBER_COUNT function
|
|
has been removed; use QUEUE_MEMBER(<queue>,logged) instead.</p>
|
|
<h4>cli.c: Remove deprecated and redundant CLI command.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-07</p>
|
|
<p>The "no debug channel" command has been deprecated since
|
|
1.6 (commit 691363656fbdc83edf04b125317aebae6525c9e7),
|
|
as it is replaced by "core set debug channel", which also
|
|
supports tab-completion on channels. Remove the redundant
|
|
command.</p>
|
|
<p>Resolves: #1343</p>
|
|
<p>UpgradeNote: The deprecated "no debug channel" command has
|
|
now been removed; use "core set debug channel" instead.</p>
|
|
<h4>logger.c: Remove deprecated/redundant configuration option.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-07</p>
|
|
<p>Remove the deprecated 'rotatetimestamp' config option, as this
|
|
was deprecated by 'rotatestrategy' in 1.6 by commit
|
|
f5a14167f3ef090f8576da3070ed5c452fa01e44.</p>
|
|
<p>Resolves: #1345</p>
|
|
<p>UpgradeNote: The deprecated rotatetimestamp option has been removed.
|
|
Use rotatestrategy instead.</p>
|
|
<h4>func_dialplan: Remove deprecated/redundant function.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-07</p>
|
|
<p>Remove VALID_EXTEN, which was deprecated/superseded by DIALPLAN_EXISTS
|
|
in Asterisk 11 (commit 8017b65bb97c4226ca7a3c7c944a9811484e0305),
|
|
as DIALPLAN_EXISTS does the same thing and is more flexible.</p>
|
|
<p>Resolves: #1347</p>
|
|
<p>UpgradeNote: The deprecated VALID_EXTEN function has been removed.
|
|
Use DIALPLAN_EXISTS instead.</p>
|
|
<h4>Update version for Asterisk 23</h4>
|
|
<p>Author: Ben Ford
|
|
Date: 2025-08-13</p>
|
|
<h4>chan_websocket.c: Add DTMF messages</h4>
|
|
<p>Author: Joe Garlick
|
|
Date: 2025-09-04</p>
|
|
<p>Added DTMF messages to the chan_websocket feature.</p>
|
|
<p>When a user presses DTMF during a call over chan_websocket it will send a message like:
|
|
"DTMF_END digit:1"</p>
|
|
<p>Resolves: https://github.com/asterisk/asterisk-feature-requests/issues/70</p>
|
|
<h4>app_queue.c: Add new global 'log_unpause_on_reason_change'</h4>
|
|
<p>Author: Igor Goncharovsky
|
|
Date: 2025-09-02</p>
|
|
<p>In many asterisk-based systems, the pause reason is used to separate
|
|
pauses by type,and logically, changing the reason defines two intervals
|
|
that should be accounted for separately. The introduction of a new
|
|
option allows me to separate the intervals of operator inactivity in
|
|
the log by the event of unpausing.</p>
|
|
<p>UserNote: Add new global option 'log_unpause_on_reason_change' that
|
|
is default disabled. When enabled cause addition of UNPAUSE event on
|
|
every re-PAUSE with reason changed.</p>
|
|
<h4>app_waitforsilence.c: Use milliseconds to calculate timeout time</h4>
|
|
<p>Author: Igor Goncharovsky
|
|
Date: 2025-09-04</p>
|
|
<p>The functions WaitForNoise() and WaitForSilence() use the time()
|
|
functions to calculate elapsed time, which causes the timer to fire on
|
|
a whole second boundary, and the actual function execution time to fire
|
|
the timer may be 1 second less than expected. This fix replaces time()
|
|
with ast_tvnow().</p>
|
|
<p>Fixes: #1401</p>
|
|
<h4>res_rtp_asterisk: Don't send RTP before DTLS has negotiated.</h4>
|
|
<p>Author: Ben Ford
|
|
Date: 2025-08-04</p>
|
|
<p>There was no check in __rtp_sendto that prevented Asterisk from sending
|
|
RTP before DTLS had finished negotiating. This patch adds logic to do
|
|
so.</p>
|
|
<p>Fixes: #1260</p>
|
|
<h4>Fix missing ast_test_flag64 in extconf.c</h4>
|
|
<p>Author: Artem Umerov
|
|
Date: 2025-08-29</p>
|
|
<p>Fix missing ast_test_flag64 after https://github.com/asterisk/asterisk/commit/43bf8a4ded7a65203b766b91eaf8331a600e9d8d</p>
|
|
<h4>pbx_builtins: Allow custom tone for WaitExten.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-25</p>
|
|
<p>Currently, the 'd' option will play dial tone while waiting
|
|
for digits. Allow it to accept an argument for any tone from
|
|
indications.conf.</p>
|
|
<p>Resolves: #1396</p>
|
|
<p>UserNote: The tone used while waiting for digits in WaitExten
|
|
can now be overridden by specifying an argument for the 'd'
|
|
option.</p>
|
|
<h4>res_tonedetect: Add option for TONE_DETECT detection to auto stop.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-22</p>
|
|
<p>One of the problems with TONE_DETECT as it was originally written
|
|
is that if a tone is detected multiple times, it can trigger
|
|
the redirect logic multiple times as well. For example, if we
|
|
do an async goto in the dialplan after detecting a tone, because
|
|
the detector is still active until explicitly disabled, if we
|
|
detect the tone again, we will branch again and start executing
|
|
that dialplan a second time. This is rarely ever desired behavior,
|
|
and can happen if the detector is not removed quickly enough.</p>
|
|
<p>Add a new option, 'e', which automatically disables the detector
|
|
once the desired number of matches have been heard. This eliminates
|
|
the potential race condition where previously the detector would
|
|
need to be disabled immediately, but doing so quickly enough
|
|
was not guaranteed. This also allows match criteria to be retained
|
|
longer if needed, so the detector does not need to be destroyed
|
|
prematurely.</p>
|
|
<p>Resolves: #1390</p>
|
|
<p>UserNote: The 'e' option for TONE_DETECT now allows detection to
|
|
be disabled automatically once the desired number of matches have
|
|
been fulfilled, which can help prevent race conditions in the
|
|
dialplan, since TONE_DETECT does not need to be disabled after
|
|
a hit.</p>
|
|
<h4>app_queue: fix comparison for announce-position-only-up</h4>
|
|
<p>Author: Stuart Henderson
|
|
Date: 2025-08-21</p>
|
|
<p>Numerically comparing that the current queue position is less than
|
|
last_pos_said can only be done after at least one announcement has been
|
|
made, otherwise last_pos_said is at the default (0).</p>
|
|
<p>Fixes: #1386</p>
|
|
<h4>res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.</h4>
|
|
<p>Author: George Joseph
|
|
Date: 2025-08-28</p>
|
|
<p>In the highly-unlikely event that get_authorization_hdr() couldn't find an
|
|
Authorization header in a request, trying to get the digest algorithm
|
|
would cauase a SEGV. We now check that we have an auth header that matches
|
|
the realm before trying to get the algorithm from it.</p>
|
|
<p>Resolves: #GHSA-64qc-9x89-rx5j</p>
|
|
<h4>sorcery: Prevent duplicate objects and ensure missing objects are created on u..</h4>
|
|
<p>Author: Alexei Gradinari
|
|
Date: 2025-07-07</p>
|
|
<p>This patch resolves two issues in Sorcery objectset handling with multiple
|
|
backends:</p>
|
|
<ol>
|
|
<li>
|
|
<p>Prevent duplicate objects:
|
|
When an object exists in more than one backend (e.g., a contact in both
|
|
'astdb' and 'realtime'), the objectset previously returned multiple instances
|
|
of the same logical object. This caused logic failures in components like the
|
|
PJSIP registrar, where duplicate contact entries led to overcounting and
|
|
incorrect deletions, when max_contacts=1 and remove_existing=yes.</p>
|
|
<p>This patch ensures only one instance of an object with a given key is added
|
|
to the objectset, avoiding these duplicate-related side effects.</p>
|
|
</li>
|
|
<li>
|
|
<p>Ensure missing objects are created:
|
|
When using multiple writable backends, a temporary backend failure can lead
|
|
to objects missing permanently from that backend.
|
|
Currently, .update() silently fails if the object is not present,
|
|
and no .create() is attempted.
|
|
This results in inconsistent state across backends (e.g. astdb vs. realtime).</p>
|
|
<p>This patch introduces a new global option in sorcery.conf:
|
|
[general]
|
|
update_or_create_on_update_miss = yes|no</p>
|
|
<p>Default: no (preserves existing behavior).</p>
|
|
<p>When enabled: if .update() fails with no data found, .create() is attempted
|
|
in that backend. This ensures that objects missing due to temporary backend
|
|
outages are re-synchronized once the backend is available again.</p>
|
|
<p>Added a new CLI command:
|
|
sorcery show settings
|
|
Displays global Sorcery settings, including the current value of
|
|
update_or_create_on_update_miss.</p>
|
|
<p>Updated tests to validate both flag enabled/disabled behavior.</p>
|
|
</li>
|
|
</ol>
|
|
<p>Fixes: #1289</p>
|
|
<p>UserNote: Users relying on Sorcery multiple writable backends configurations
|
|
(e.g., astdb + realtime) may now enable update_or_create_on_update_miss = yes
|
|
in sorcery.conf to ensure missing objects are recreated after temporary backend
|
|
failures. Default behavior remains unchanged unless explicitly enabled.</p>
|
|
<h4>sig_analog: Skip Caller ID spill if usecallerid=no.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-25</p>
|
|
<p>If Caller ID is disabled for an FXS port, then we should not send any
|
|
Caller ID spill on the line, as we have no Caller ID information that
|
|
we can/should be sending.</p>
|
|
<p>Resolves: #1394</p>
|
|
<h4>chan_dahdi: Fix erroneously persistent dialmode.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-18</p>
|
|
<p>It is possible to modify the dialmode setting in the chan_dahdi/sig_analog
|
|
private using the CHANNEL function, to modify it during calls. However,
|
|
it was not being reset between calls, meaning that if, for example, tone
|
|
dialing was disabled, it would never work again unless explicitly enabled.</p>
|
|
<p>This fixes the setting by pairing it with a "perm" version of the setting,
|
|
as a few other features have, so that it can be reset to the permanent
|
|
setting between calls. The documentation is also clarified to explain
|
|
the interaction of this setting and the digitdetect setting more clearly.</p>
|
|
<p>Resolves: #1378</p>
|
|
<h4>chan_websocket: Allow additional URI parameters to be added to the outgoing URI.</h4>
|
|
<p>Author: George Joseph
|
|
Date: 2025-08-13</p>
|
|
<ul>
|
|
<li>Added a new option to the WebSocket dial string to capture the additional
|
|
URI parameters.</li>
|
|
<li>Added a new API ast_uri_verify_encoded() that verifies that a string
|
|
either doesn't need URI encoding or that it has already been encoded.</li>
|
|
<li>Added a new API ast_websocket_client_add_uri_params() to add the params
|
|
to the client websocket session.</li>
|
|
<li>Added XML documentation that will show up with <code>core show application Dial</code>
|
|
that shows how to use it.</li>
|
|
</ul>
|
|
<p>Resolves: #1352</p>
|
|
<p>UserNote: A new WebSocket channel driver option <code>v</code> has been added to the
|
|
Dial application that allows you to specify additional URI parameters on
|
|
outgoing connections. Run <code>core show application Dial</code> from the Asterisk CLI
|
|
to see how to use it.</p>
|
|
<h4>chan_websocket: Fix buffer overrun when processing TEXT websocket frames.</h4>
|
|
<p>Author: George Joseph
|
|
Date: 2025-08-19</p>
|
|
<p>ast_websocket_read() receives data into a fixed 64K buffer then continually
|
|
reallocates a final buffer that, after all continuation frames have been
|
|
received, is the exact length of the data received and returns that to the
|
|
caller. process_text_message() in chan_websocket was attempting to set a
|
|
NULL terminator on the received payload assuming the payload buffer it
|
|
received was the large 64K buffer. The assumption was incorrect so when it
|
|
tried to set a NULL terminator on the payload, it could, depending on the
|
|
state of the heap at the time, cause heap corruption.</p>
|
|
<p>process_text_message() now allocates its own payload_len + 1 sized buffer,
|
|
copies the payload received from ast_websocket_read() into it then NULL
|
|
terminates it prevent the possibility of the overrun and corruption.</p>
|
|
<p>Resolves: #1384</p>
|
|
<h4>sig_analog: Fix SEGV due to calling strcmp on NULL.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-18</p>
|
|
<p>Add an additional check to guard against the channel application being
|
|
NULL.</p>
|
|
<p>Resolves: #1380</p>
|
|
<h4>ARI: Add command to indicate progress to a channel</h4>
|
|
<p>Author: Sven Kube
|
|
Date: 2025-07-30</p>
|
|
<p>Adds an ARI command to send a progress indication to a channel.</p>
|
|
<p>DeveloperNote: A new ARI endpoint is available at <code>/channels/{channelId}/progress</code> to indicate progress to a channel.</p>
|
|
<h4>dsp.c: Improve debug logging in tone_detect().</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-15</p>
|
|
<p>The debug logging during DSP processing has always been kind
|
|
of overwhelming and annoying to troubleshoot. Simplify and
|
|
improve the logging in a few ways to aid DSP debugging:</p>
|
|
<ul>
|
|
<li>If we had a DSP hit, don't also emit the previous debug message that
|
|
was always logged. It is duplicated by the hit message, so this can
|
|
reduce the number of debug messages during detection by 50%.</li>
|
|
<li>Include the hit count and required number of hits in the message so
|
|
on partial detections can be more easily troubleshot.</li>
|
|
<li>Use debug level 9 for hits instead of 10, so we can focus on hits
|
|
without all the noise from the per-frame debug message.</li>
|
|
<li>1-index the hit count in the debug messages. On the first hit, it
|
|
currently logs '0', just as when we are not detecting anything,
|
|
which can be confusing.</li>
|
|
</ul>
|
|
<p>Resolves: #1375</p>
|
|
<h4>res_stasis_device_state: Fix delete ARI Devicestates after asterisk restart.</h4>
|
|
<p>Author: Jose Lopes
|
|
Date: 2025-07-30</p>
|
|
<p>After an asterisk restart, the deletion of ARI Devicestates didn't
|
|
return error, but the devicestate was not deleted.
|
|
Found a typo on populate_cache function that created wrong cache for
|
|
device states.
|
|
This bug caused wrong assumption that devicestate didn't exist,
|
|
since it was not in cache, so deletion didn't returned error.</p>
|
|
<p>Fixes: #1327</p>
|
|
<h4>app_chanspy: Add option to not automatically answer channel.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-13</p>
|
|
<p>Add an option for ChanSpy and ExtenSpy to not answer the channel
|
|
automatically. Most applications that auto-answer by default
|
|
already have an option to disable this behavior if unwanted.</p>
|
|
<p>Resolves: #1358</p>
|
|
<p>UserNote: ChanSpy and ExtenSpy can now be configured to not
|
|
automatically answer the channel by using the 'N' option.</p>
|
|
<h4>xmldoc.c: Fix rendering of CLI output.</h4>
|
|
<p>Author: George Joseph
|
|
Date: 2025-08-14</p>
|
|
<p>If you do a <code>core show application Dial</code>, you'll see it's kind of a mess.
|
|
Indents are wrong is some places, examples are printed in black which makes
|
|
them invisible on most terminals, and the lack of line breaks in some cases
|
|
makes it hard to follow.</p>
|
|
<ul>
|
|
<li>Fixed the rendering of examples so they are indented properly and changed
|
|
the color so they can be seen.</li>
|
|
<li>There is now a line break before each option.</li>
|
|
<li>Options are now printed on their own line with all option content indented
|
|
below them.</li>
|
|
</ul>
|
|
<p>Example from Dial before fixes:
|
|
```
|
|
Example: Dial 555-1212 on first available channel in group 1, searching
|
|
from highest to lowest</p>
|
|
<pre><code> Example: Ringing FXS channel 4 with ring cadence 2
|
|
|
|
Example: Dial 555-1212 on channel 3 and require answer confirmation
|
|
</code></pre>
|
|
<p>...</p>
|
|
<pre><code> O([mode]):
|
|
mode - With <mode> either not specified or set to '1', the originator
|
|
hanging up will cause the phone to ring back immediately.
|
|
</code></pre>
|
|
<ul>
|
|
<li>
|
|
<p>With <mode> set to '2', when the operator flashes the trunk, it will ring
|
|
their phone back.
|
|
Enables <em>operator services</em> mode. This option only works when bridging a DAHDI
|
|
channel to another DAHDI channel only. If specified on non-DAHDI interfaces, it
|
|
will be ignored. When the destination answers (presumably an operator services
|
|
station), the originator no longer has control of their line. They may hang up,
|
|
but the switch will not release their line until the destination party (the
|
|
operator) hangs up.</p>
|
|
<p>p: This option enables screening mode. This is basically Privacy mode
|
|
without memory.
|
|
```</p>
|
|
</li>
|
|
</ul>
|
|
<p>After:
|
|
```
|
|
Example: Dial 555-1212 on first available channel in group 1, searching
|
|
from highest to lowest</p>
|
|
<pre><code> same => n,Dial(DAHDI/g1/5551212)
|
|
|
|
Example: Ringing FXS channel 4 with ring cadence 2
|
|
|
|
same => n,Dial(DAHDI/4r2)
|
|
|
|
Example: Dial 555-1212 on channel 3 and require answer confirmation
|
|
|
|
same => n,Dial(DAHDI/3c/5551212)
|
|
</code></pre>
|
|
<p>...</p>
|
|
<pre><code> O([mode]):
|
|
mode - With <mode> either not specified or set to '1', the originator
|
|
hanging up will cause the phone to ring back immediately.
|
|
With <mode> set to '2', when the operator flashes the trunk, it will
|
|
ring their phone back.
|
|
Enables *operator services* mode. This option only works when bridging
|
|
a DAHDI channel to another DAHDI channel only. If specified on
|
|
non-DAHDI interfaces, it will be ignored. When the destination answers
|
|
(presumably an operator services station), the originator no longer has
|
|
control of their line. They may hang up, but the switch will not
|
|
release their line until the destination party (the operator) hangs up.
|
|
|
|
p:
|
|
This option enables screening mode. This is basically Privacy mode
|
|
without memory.
|
|
</code></pre>
|
|
<p>```</p>
|
|
<p>There are still things we can do to make this more readable but this is a
|
|
start.</p>
|
|
<h4>func_frame_drop: Add debug messages for dropped frames.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-14</p>
|
|
<p>Add debug messages in scenarios where frames that are usually processed
|
|
are dropped or skipped.</p>
|
|
<p>Resolves: #1371</p>
|
|
<h4>test_res_prometheus: Fix compilation failure on Debian 13.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-14</p>
|
|
<p>curl_easy_setopt expects long types, so be explicit.</p>
|
|
<p>Resolves: #1369</p>
|
|
<h4>func_frame_drop: Handle allocation failure properly.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-14</p>
|
|
<p>Handle allocation failure and simplify the allocation using asprintf.</p>
|
|
<p>Resolves: #1366</p>
|
|
<h4>pbx_lua.c: segfault when pass null data to term_color function</h4>
|
|
<p>Author: Alexey Khabulyak
|
|
Date: 2025-08-14</p>
|
|
<p>This can be reproduced under certain curcomstences.
|
|
For example: call app.playback from lua with invalid data: app.playback({}).
|
|
pbx_lua.c will try to get data for this playback using lua_tostring function.
|
|
This function returs NULL for everything but strings and numbers.
|
|
Then, it calls term_color with NULL data.
|
|
term_color function can call(if we don't use vt100 compat term)
|
|
ast_copy_string with NULL inbuf which cause segfault. bt example:
|
|
ast_copy_string (size=8192, src=0x0, dst=0x7fe44b4be8b0)
|
|
at /usr/src/asterisk/asterisk-20.11.0/include/asterisk/strings.h:412</p>
|
|
<p>Resolves: https://github.com/asterisk/asterisk/issues/1363</p>
|
|
<h4>bridge.c: Obey BRIDGE_NOANSWER variable to skip answering channel.</h4>
|
|
<p>Author: Naveen Albert
|
|
Date: 2025-08-14</p>
|
|
<p>If the BRIDGE_NOANSWER variable is set on a channel, it is not supposed
|
|
to answer when another channel bridges to it using Bridge(), and this is
|
|
checked when ast_bridge_call* is called. However, another path exists
|
|
(bridge_exec -> ast_bridge_add_channel) where this variable was not
|
|
checked and channels would be answered. We now check the variable there.</p>
|
|
<p>Resolves: #401
|
|
Resolves: #1364</p>
|
|
</body></html>
|