mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Update for 23.0.0-rc1
This commit is contained in:
1
CHANGES.html
Symbolic link
1
CHANGES.html
Symbolic link
@@ -0,0 +1 @@
|
||||
ChangeLogs/ChangeLog-23.0.0-rc1.html
|
1
CHANGES.md
Symbolic link
1
CHANGES.md
Symbolic link
@@ -0,0 +1 @@
|
||||
ChangeLogs/ChangeLog-23.0.0-rc1.md
|
813
ChangeLogs/ChangeLog-23.0.0-rc1.html
Normal file
813
ChangeLogs/ChangeLog-23.0.0-rc1.html
Normal file
@@ -0,0 +1,813 @@
|
||||
<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>
|
918
ChangeLogs/ChangeLog-23.0.0-rc1.md
Normal file
918
ChangeLogs/ChangeLog-23.0.0-rc1.md
Normal file
@@ -0,0 +1,918 @@
|
||||
|
||||
## Change Log for Release asterisk-23.0.0-rc1
|
||||
|
||||
### Links:
|
||||
|
||||
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-23.0.0-rc1.html)
|
||||
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/23.0.0-pre1...23.0.0-rc1)
|
||||
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-23.0.0-rc1.tar.gz)
|
||||
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
|
||||
|
||||
### Summary:
|
||||
|
||||
- Commits: 41
|
||||
- Commit Authors: 13
|
||||
- Issues Resolved: 32
|
||||
- Security Advisories Resolved: 1
|
||||
- [GHSA-64qc-9x89-rx5j](https://github.com/asterisk/asterisk/security/advisories/GHSA-64qc-9x89-rx5j): A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash
|
||||
|
||||
### User Notes:
|
||||
|
||||
- #### app_queue.c: Add new global 'log_unpause_on_reason_change'
|
||||
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.
|
||||
|
||||
- #### pbx_builtins: Allow custom tone for WaitExten.
|
||||
The tone used while waiting for digits in WaitExten
|
||||
can now be overridden by specifying an argument for the 'd'
|
||||
option.
|
||||
|
||||
- #### res_tonedetect: Add option for TONE_DETECT detection to auto stop.
|
||||
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.
|
||||
|
||||
- #### sorcery: Prevent duplicate objects and ensure missing objects are created on u..
|
||||
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.
|
||||
|
||||
- #### chan_websocket: Allow additional URI parameters to be added to the outgoing URI.
|
||||
A new WebSocket channel driver option `v` has been added to the
|
||||
Dial application that allows you to specify additional URI parameters on
|
||||
outgoing connections. Run `core show application Dial` from the Asterisk CLI
|
||||
to see how to use it.
|
||||
|
||||
- #### app_chanspy: Add option to not automatically answer channel.
|
||||
ChanSpy and ExtenSpy can now be configured to not
|
||||
automatically answer the channel by using the 'N' option.
|
||||
|
||||
|
||||
### Upgrade Notes:
|
||||
|
||||
- #### config.c Make ast_variable_update update last match.
|
||||
Config variables, when set/updated, such as via AMI,
|
||||
will now have the corresponding setting updated, even if their
|
||||
sections inherit from template sections.
|
||||
|
||||
- #### config.c: Make ast_variable_retrieve return last match.
|
||||
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.
|
||||
|
||||
- #### users.conf: Remove deprecated users.conf integration.
|
||||
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.
|
||||
|
||||
- #### res_agi: Remove deprecated DeadAGI application.
|
||||
The DeadAGI application, which was
|
||||
deprecated in Asterisk 15, has now been removed.
|
||||
The same functionality is available in the AGI app.
|
||||
|
||||
- #### res_musiconhold: Remove options that were deprecated in Asterisk 14.
|
||||
The deprecated random and application=r options have
|
||||
been removed; use sort=random instead.
|
||||
|
||||
- #### app_voicemail: Remove deprecated options.
|
||||
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.
|
||||
|
||||
- #### app_queue: Remove redundant/deprecated function.
|
||||
The deprecated QUEUE_MEMBER_COUNT function
|
||||
has been removed; use QUEUE_MEMBER(<queue>,logged) instead.
|
||||
|
||||
- #### cli.c: Remove deprecated and redundant CLI command.
|
||||
The deprecated "no debug channel" command has
|
||||
now been removed; use "core set debug channel" instead.
|
||||
|
||||
- #### logger.c: Remove deprecated/redundant configuration option.
|
||||
The deprecated rotatetimestamp option has been removed.
|
||||
Use rotatestrategy instead.
|
||||
|
||||
- #### func_dialplan: Remove deprecated/redundant function.
|
||||
The deprecated VALID_EXTEN function has been removed.
|
||||
Use DIALPLAN_EXISTS instead.
|
||||
|
||||
|
||||
### Developer Notes:
|
||||
|
||||
- #### ARI: Add command to indicate progress to a channel
|
||||
A new ARI endpoint is available at `/channels/{channelId}/progress` to indicate progress to a channel.
|
||||
|
||||
|
||||
### Commit Authors:
|
||||
|
||||
- Alexei Gradinari: (1)
|
||||
- Alexey Khabulyak: (1)
|
||||
- Artem Umerov: (1)
|
||||
- Ben Ford: (2)
|
||||
- George Joseph: (4)
|
||||
- Igor Goncharovsky: (2)
|
||||
- Joe Garlick: (1)
|
||||
- Jose Lopes: (1)
|
||||
- Mike Bradeen: (1)
|
||||
- Naveen Albert: (23)
|
||||
- Sean Bright: (2)
|
||||
- Stuart Henderson: (1)
|
||||
- Sven Kube: (1)
|
||||
|
||||
## Issue and Commit Detail:
|
||||
|
||||
### Closed Issues:
|
||||
|
||||
- !GHSA-64qc-9x89-rx5j: A specifically malformed Authorization header in an incoming SIP request can cause Asterisk to crash
|
||||
- 244: [bug]: config.c: Template inheritance is incorrect for ast_variable_retrieve
|
||||
- 258: [deprecation]: Remove deprecated DeadAGI application.
|
||||
- 401: [bug]: app_dial: Answer Gosub option passthrough regression
|
||||
- 960: [bug]: config.c: Template inheritance is not respected by ast_variable_update
|
||||
- 1147: [bug]: Commit 3cab4e7a to config.c causes segfaults and spinloops in UpdateConfig mgr action
|
||||
- 1222: [bug]: func_callerid: ANI2 is not always formatted as two digits
|
||||
- 1260: [bug]: Asterisk sends RTP audio stream before ICE/DTLS completes
|
||||
- 1289: [bug]: sorcery - duplicate objects from multiple backends and backend divergence on update
|
||||
- 1292: [improvement]: Remove deprecated users.conf
|
||||
- 1296: [improvement]: res_musiconhold: Remove deprecated options
|
||||
- 1298: [improvement]: app_voicemail: Remove deprecated options
|
||||
- 1327: [bug]: res_stasis_device_state: can't delete ARI Devicestate after asterisk restart
|
||||
- 1341: [improvement]: app_queue: Remove deprecated QUEUE_MEMBER_COUNT function
|
||||
- 1343: [improvement]: cli.c: Remove deprecated/redundant CLI command.
|
||||
- 1345: [improvement]: logger.c: Remove deprecated/redundant config option
|
||||
- 1347: [improvement]: func_dialplan: Remove deprecated/redundant function
|
||||
- 1352: [improvement]: Websocket channel with custom URI
|
||||
- 1358: [new-feature]: app_chanspy: Add option to not automatically answer channel
|
||||
- 1364: [bug]: bridge.c: BRIDGE_NOANSWER not always obeyed
|
||||
- 1366: [improvement]: func_frame_drop: Handle allocation failure properly
|
||||
- 1369: [bug]: test_res_prometheus: Compilation failure in devmode due to curlopts not using long type
|
||||
- 1371: [improvement]: func_frame_drop: Add debug messages for frames that can be dropped
|
||||
- 1375: [improvement]: dsp.c: Improve logging in tone_detect().
|
||||
- 1378: [bug]: chan_dahdi: dialmode feature is not properly reset between calls
|
||||
- 1380: [bug]: sig_analog: Segfault due to calling strcmp on NULL
|
||||
- 1384: [bug]: chan_websocket: asterisk crashes on hangup after STOP_MEDIA_BUFFERING command with id
|
||||
- 1386: [bug]: enabling announceposition_only_up prevents any queue position announcements
|
||||
- 1390: [improvement]: res_tonedetect: Add option to automatically end detection in TONE_DETECT
|
||||
- 1394: [improvement]: sig_analog: Skip Caller ID spill if Caller ID is disabled
|
||||
- 1396: [new-feature]: pbx_builtins: Make tone option for WaitExten configurable
|
||||
- 1401: [bug]: app_waitfornoise timeout is always less then configured because of time() usage
|
||||
- ASTERISK-30370: config: Template inheritance is incorrect for ast_variable_retrieve
|
||||
|
||||
### Commits By Author:
|
||||
|
||||
- #### Alexei Gradinari (1):
|
||||
- sorcery: Prevent duplicate objects and ensure missing objects are created on u..
|
||||
|
||||
- #### Alexey Khabulyak (1):
|
||||
- pbx_lua.c: segfault when pass null data to term_color function
|
||||
|
||||
- #### Artem Umerov (1):
|
||||
- Fix missing ast_test_flag64 in extconf.c
|
||||
|
||||
- #### Ben Ford (1):
|
||||
- res_rtp_asterisk: Don't send RTP before DTLS has negotiated.
|
||||
|
||||
- #### George Joseph (4):
|
||||
- xmldoc.c: Fix rendering of CLI output.
|
||||
- chan_websocket: Fix buffer overrun when processing TEXT websocket frames.
|
||||
- chan_websocket: Allow additional URI parameters to be added to the outgoing URI.
|
||||
- res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.
|
||||
|
||||
- #### Igor Goncharovsky (2):
|
||||
- app_waitforsilence.c: Use milliseconds to calculate timeout time
|
||||
- app_queue.c: Add new global 'log_unpause_on_reason_change'
|
||||
|
||||
- #### Joe Garlick (1):
|
||||
- chan_websocket.c: Add DTMF messages
|
||||
|
||||
- #### Jose Lopes (1):
|
||||
- res_stasis_device_state: Fix delete ARI Devicestates after asterisk restart.
|
||||
|
||||
- #### Naveen Albert (11):
|
||||
- bridge.c: Obey BRIDGE_NOANSWER variable to skip answering channel.
|
||||
- func_frame_drop: Handle allocation failure properly.
|
||||
- test_res_prometheus: Fix compilation failure on Debian 13.
|
||||
- func_frame_drop: Add debug messages for dropped frames.
|
||||
- app_chanspy: Add option to not automatically answer channel.
|
||||
- dsp.c: Improve debug logging in tone_detect().
|
||||
- sig_analog: Fix SEGV due to calling strcmp on NULL.
|
||||
- chan_dahdi: Fix erroneously persistent dialmode.
|
||||
- sig_analog: Skip Caller ID spill if usecallerid=no.
|
||||
- res_tonedetect: Add option for TONE_DETECT detection to auto stop.
|
||||
- pbx_builtins: Allow custom tone for WaitExten.
|
||||
|
||||
- #### Stuart Henderson (1):
|
||||
- app_queue: fix comparison for announce-position-only-up
|
||||
|
||||
- #### Sven Kube (1):
|
||||
- ARI: Add command to indicate progress to a channel
|
||||
|
||||
|
||||
### Commit List:
|
||||
|
||||
- Prepare for Asterisk 23
|
||||
- config.c Make ast_variable_update update last match.
|
||||
- config.c: Make ast_variable_retrieve return last match.
|
||||
- utils: Remove libdb and astdb conversion scripts.
|
||||
- config.c: Fix inconsistent pointer logic in ast_variable_update.
|
||||
- channel: Deprecate `ast_moh_cleanup(...)`.
|
||||
- func_callerid: Always format ANI2 as two digits.
|
||||
- users.conf: Remove deprecated users.conf integration.
|
||||
- res_agi: Remove deprecated DeadAGI application.
|
||||
- res_musiconhold: Remove options that were deprecated in Asterisk 14.
|
||||
- app_voicemail: Remove deprecated options.
|
||||
- app_queue: Remove redundant/deprecated function.
|
||||
- cli.c: Remove deprecated and redundant CLI command.
|
||||
- logger.c: Remove deprecated/redundant configuration option.
|
||||
- func_dialplan: Remove deprecated/redundant function.
|
||||
- Update version for Asterisk 23
|
||||
- chan_websocket.c: Add DTMF messages
|
||||
- app_queue.c: Add new global 'log_unpause_on_reason_change'
|
||||
- app_waitforsilence.c: Use milliseconds to calculate timeout time
|
||||
- res_rtp_asterisk: Don't send RTP before DTLS has negotiated.
|
||||
- Fix missing ast_test_flag64 in extconf.c
|
||||
- pbx_builtins: Allow custom tone for WaitExten.
|
||||
- res_tonedetect: Add option for TONE_DETECT detection to auto stop.
|
||||
- app_queue: fix comparison for announce-position-only-up
|
||||
- res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.
|
||||
- sig_analog: Skip Caller ID spill if usecallerid=no.
|
||||
- chan_dahdi: Fix erroneously persistent dialmode.
|
||||
- chan_websocket: Fix buffer overrun when processing TEXT websocket frames.
|
||||
- sig_analog: Fix SEGV due to calling strcmp on NULL.
|
||||
- ARI: Add command to indicate progress to a channel
|
||||
- dsp.c: Improve debug logging in tone_detect().
|
||||
- res_stasis_device_state: Fix delete ARI Devicestates after asterisk restart.
|
||||
- app_chanspy: Add option to not automatically answer channel.
|
||||
- xmldoc.c: Fix rendering of CLI output.
|
||||
- func_frame_drop: Add debug messages for dropped frames.
|
||||
- test_res_prometheus: Fix compilation failure on Debian 13.
|
||||
- func_frame_drop: Handle allocation failure properly.
|
||||
- pbx_lua.c: segfault when pass null data to term_color function
|
||||
- bridge.c: Obey BRIDGE_NOANSWER variable to skip answering channel.
|
||||
|
||||
### Commit Details:
|
||||
|
||||
#### Prepare for Asterisk 23
|
||||
Author: Mike Bradeen
|
||||
Date: 2024-08-14
|
||||
|
||||
|
||||
#### config.c Make ast_variable_update update last match.
|
||||
Author: Naveen Albert
|
||||
Date: 2024-10-23
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #960
|
||||
|
||||
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.
|
||||
|
||||
#### config.c: Make ast_variable_retrieve return last match.
|
||||
Author: Naveen Albert
|
||||
Date: 2023-08-09
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
ASTERISK-30370 #close
|
||||
|
||||
Resolves: #244
|
||||
|
||||
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.
|
||||
|
||||
#### utils: Remove libdb and astdb conversion scripts.
|
||||
Author: Sean Bright
|
||||
Date: 2025-01-29
|
||||
|
||||
These were included with Asterisk 10 when we switched astdb from libdb
|
||||
to sqlite3.
|
||||
|
||||
#### config.c: Fix inconsistent pointer logic in ast_variable_update.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-03-06
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1147
|
||||
|
||||
#### channel: Deprecate `ast_moh_cleanup(...)`.
|
||||
Author: Sean Bright
|
||||
Date: 2025-04-08
|
||||
|
||||
We don't want anyone calling it but the channel destructor.
|
||||
|
||||
#### func_callerid: Always format ANI2 as two digits.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-04-26
|
||||
|
||||
ANI II is always supposed to be formatted as two digits,
|
||||
so zero pad when formatting it if necessary.
|
||||
|
||||
Resolves: #1222
|
||||
|
||||
#### users.conf: Remove deprecated users.conf integration.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-07-09
|
||||
|
||||
users.conf was deprecated in Asterisk 21 and is now being removed
|
||||
for Asterisk 23, in accordance with the Asterisk deprecation policy.
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1292
|
||||
|
||||
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.
|
||||
|
||||
#### res_agi: Remove deprecated DeadAGI application.
|
||||
Author: Naveen Albert
|
||||
Date: 2023-08-11
|
||||
|
||||
DeadAGI was deprecated 7 years ago, in Asterisk 15,
|
||||
as it duplicates functionality in the AGI app.
|
||||
This removes the application.
|
||||
|
||||
Resolves: #258
|
||||
|
||||
UpgradeNote: The DeadAGI application, which was
|
||||
deprecated in Asterisk 15, has now been removed.
|
||||
The same functionality is available in the AGI app.
|
||||
|
||||
#### res_musiconhold: Remove options that were deprecated in Asterisk 14.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-07-09
|
||||
|
||||
Commit 9c1f34c7e904b26bb550f426020635894cb805ac added dedicated options
|
||||
for random sorting functionality and deprecated older options that
|
||||
now duplicated these capabilities. Remove these deprecated options.
|
||||
|
||||
Resolves: #1296
|
||||
|
||||
UpgradeNote: The deprecated random and application=r options have
|
||||
been removed; use sort=random instead.
|
||||
|
||||
#### app_voicemail: Remove deprecated options.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-07-10
|
||||
|
||||
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.)
|
||||
|
||||
Resolves: #1298
|
||||
|
||||
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.
|
||||
|
||||
#### app_queue: Remove redundant/deprecated function.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-07
|
||||
|
||||
QUEUE_MEMBER_COUNT has been deprecated since at least 1.6,
|
||||
for fully duplicating functionality available in the
|
||||
QUEUE_MEMBER function; remove it now.
|
||||
|
||||
Resolves: #1341
|
||||
|
||||
UpgradeNote: The deprecated QUEUE_MEMBER_COUNT function
|
||||
has been removed; use QUEUE_MEMBER(<queue>,logged) instead.
|
||||
|
||||
#### cli.c: Remove deprecated and redundant CLI command.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-07
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1343
|
||||
|
||||
UpgradeNote: The deprecated "no debug channel" command has
|
||||
now been removed; use "core set debug channel" instead.
|
||||
|
||||
#### logger.c: Remove deprecated/redundant configuration option.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-07
|
||||
|
||||
Remove the deprecated 'rotatetimestamp' config option, as this
|
||||
was deprecated by 'rotatestrategy' in 1.6 by commit
|
||||
f5a14167f3ef090f8576da3070ed5c452fa01e44.
|
||||
|
||||
Resolves: #1345
|
||||
|
||||
UpgradeNote: The deprecated rotatetimestamp option has been removed.
|
||||
Use rotatestrategy instead.
|
||||
|
||||
#### func_dialplan: Remove deprecated/redundant function.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-07
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1347
|
||||
|
||||
UpgradeNote: The deprecated VALID_EXTEN function has been removed.
|
||||
Use DIALPLAN_EXISTS instead.
|
||||
|
||||
#### Update version for Asterisk 23
|
||||
Author: Ben Ford
|
||||
Date: 2025-08-13
|
||||
|
||||
|
||||
#### chan_websocket.c: Add DTMF messages
|
||||
Author: Joe Garlick
|
||||
Date: 2025-09-04
|
||||
|
||||
Added DTMF messages to the chan_websocket feature.
|
||||
|
||||
When a user presses DTMF during a call over chan_websocket it will send a message like:
|
||||
"DTMF_END digit:1"
|
||||
|
||||
Resolves: https://github.com/asterisk/asterisk-feature-requests/issues/70
|
||||
|
||||
#### app_queue.c: Add new global 'log_unpause_on_reason_change'
|
||||
Author: Igor Goncharovsky
|
||||
Date: 2025-09-02
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
|
||||
#### app_waitforsilence.c: Use milliseconds to calculate timeout time
|
||||
Author: Igor Goncharovsky
|
||||
Date: 2025-09-04
|
||||
|
||||
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().
|
||||
|
||||
Fixes: #1401
|
||||
|
||||
#### res_rtp_asterisk: Don't send RTP before DTLS has negotiated.
|
||||
Author: Ben Ford
|
||||
Date: 2025-08-04
|
||||
|
||||
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.
|
||||
|
||||
Fixes: #1260
|
||||
|
||||
#### Fix missing ast_test_flag64 in extconf.c
|
||||
Author: Artem Umerov
|
||||
Date: 2025-08-29
|
||||
|
||||
Fix missing ast_test_flag64 after https://github.com/asterisk/asterisk/commit/43bf8a4ded7a65203b766b91eaf8331a600e9d8d
|
||||
|
||||
|
||||
#### pbx_builtins: Allow custom tone for WaitExten.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-25
|
||||
|
||||
Currently, the 'd' option will play dial tone while waiting
|
||||
for digits. Allow it to accept an argument for any tone from
|
||||
indications.conf.
|
||||
|
||||
Resolves: #1396
|
||||
|
||||
UserNote: The tone used while waiting for digits in WaitExten
|
||||
can now be overridden by specifying an argument for the 'd'
|
||||
option.
|
||||
|
||||
|
||||
#### res_tonedetect: Add option for TONE_DETECT detection to auto stop.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-22
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1390
|
||||
|
||||
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.
|
||||
|
||||
|
||||
#### app_queue: fix comparison for announce-position-only-up
|
||||
Author: Stuart Henderson
|
||||
Date: 2025-08-21
|
||||
|
||||
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).
|
||||
|
||||
Fixes: #1386
|
||||
|
||||
#### res_pjsip_authenticator_digest: Fix SEGV if get_authorization_hdr returns NULL.
|
||||
Author: George Joseph
|
||||
Date: 2025-08-28
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #GHSA-64qc-9x89-rx5j
|
||||
|
||||
#### sorcery: Prevent duplicate objects and ensure missing objects are created on u..
|
||||
Author: Alexei Gradinari
|
||||
Date: 2025-07-07
|
||||
|
||||
This patch resolves two issues in Sorcery objectset handling with multiple
|
||||
backends:
|
||||
|
||||
1. 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.
|
||||
|
||||
This patch ensures only one instance of an object with a given key is added
|
||||
to the objectset, avoiding these duplicate-related side effects.
|
||||
|
||||
2. 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).
|
||||
|
||||
This patch introduces a new global option in sorcery.conf:
|
||||
[general]
|
||||
update_or_create_on_update_miss = yes|no
|
||||
|
||||
Default: no (preserves existing behavior).
|
||||
|
||||
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.
|
||||
|
||||
Added a new CLI command:
|
||||
sorcery show settings
|
||||
Displays global Sorcery settings, including the current value of
|
||||
update_or_create_on_update_miss.
|
||||
|
||||
Updated tests to validate both flag enabled/disabled behavior.
|
||||
|
||||
Fixes: #1289
|
||||
|
||||
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.
|
||||
|
||||
|
||||
#### sig_analog: Skip Caller ID spill if usecallerid=no.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-25
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1394
|
||||
|
||||
#### chan_dahdi: Fix erroneously persistent dialmode.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-18
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1378
|
||||
|
||||
#### chan_websocket: Allow additional URI parameters to be added to the outgoing URI.
|
||||
Author: George Joseph
|
||||
Date: 2025-08-13
|
||||
|
||||
* Added a new option to the WebSocket dial string to capture the additional
|
||||
URI parameters.
|
||||
* 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.
|
||||
* Added a new API ast_websocket_client_add_uri_params() to add the params
|
||||
to the client websocket session.
|
||||
* Added XML documentation that will show up with `core show application Dial`
|
||||
that shows how to use it.
|
||||
|
||||
Resolves: #1352
|
||||
|
||||
UserNote: A new WebSocket channel driver option `v` has been added to the
|
||||
Dial application that allows you to specify additional URI parameters on
|
||||
outgoing connections. Run `core show application Dial` from the Asterisk CLI
|
||||
to see how to use it.
|
||||
|
||||
|
||||
#### chan_websocket: Fix buffer overrun when processing TEXT websocket frames.
|
||||
Author: George Joseph
|
||||
Date: 2025-08-19
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1384
|
||||
|
||||
#### sig_analog: Fix SEGV due to calling strcmp on NULL.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-18
|
||||
|
||||
Add an additional check to guard against the channel application being
|
||||
NULL.
|
||||
|
||||
Resolves: #1380
|
||||
|
||||
#### ARI: Add command to indicate progress to a channel
|
||||
Author: Sven Kube
|
||||
Date: 2025-07-30
|
||||
|
||||
Adds an ARI command to send a progress indication to a channel.
|
||||
|
||||
DeveloperNote: A new ARI endpoint is available at `/channels/{channelId}/progress` to indicate progress to a channel.
|
||||
|
||||
#### dsp.c: Improve debug logging in tone_detect().
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-15
|
||||
|
||||
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:
|
||||
|
||||
* 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%.
|
||||
* Include the hit count and required number of hits in the message so
|
||||
on partial detections can be more easily troubleshot.
|
||||
* 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.
|
||||
* 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.
|
||||
|
||||
Resolves: #1375
|
||||
|
||||
#### res_stasis_device_state: Fix delete ARI Devicestates after asterisk restart.
|
||||
Author: Jose Lopes
|
||||
Date: 2025-07-30
|
||||
|
||||
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.
|
||||
|
||||
Fixes: #1327
|
||||
|
||||
#### app_chanspy: Add option to not automatically answer channel.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-13
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #1358
|
||||
|
||||
UserNote: ChanSpy and ExtenSpy can now be configured to not
|
||||
automatically answer the channel by using the 'N' option.
|
||||
|
||||
|
||||
#### xmldoc.c: Fix rendering of CLI output.
|
||||
Author: George Joseph
|
||||
Date: 2025-08-14
|
||||
|
||||
If you do a `core show application Dial`, 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.
|
||||
|
||||
* Fixed the rendering of examples so they are indented properly and changed
|
||||
the color so they can be seen.
|
||||
* There is now a line break before each option.
|
||||
* Options are now printed on their own line with all option content indented
|
||||
below them.
|
||||
|
||||
Example from Dial before fixes:
|
||||
```
|
||||
Example: Dial 555-1212 on first available channel in group 1, searching
|
||||
from highest to lowest
|
||||
|
||||
Example: Ringing FXS channel 4 with ring cadence 2
|
||||
|
||||
Example: Dial 555-1212 on channel 3 and require answer confirmation
|
||||
|
||||
...
|
||||
|
||||
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.
|
||||
```
|
||||
|
||||
After:
|
||||
```
|
||||
Example: Dial 555-1212 on first available channel in group 1, searching
|
||||
from highest to lowest
|
||||
|
||||
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)
|
||||
|
||||
...
|
||||
|
||||
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.
|
||||
```
|
||||
|
||||
There are still things we can do to make this more readable but this is a
|
||||
start.
|
||||
|
||||
|
||||
#### func_frame_drop: Add debug messages for dropped frames.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-14
|
||||
|
||||
Add debug messages in scenarios where frames that are usually processed
|
||||
are dropped or skipped.
|
||||
|
||||
Resolves: #1371
|
||||
|
||||
#### test_res_prometheus: Fix compilation failure on Debian 13.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-14
|
||||
|
||||
curl_easy_setopt expects long types, so be explicit.
|
||||
|
||||
Resolves: #1369
|
||||
|
||||
#### func_frame_drop: Handle allocation failure properly.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-14
|
||||
|
||||
Handle allocation failure and simplify the allocation using asprintf.
|
||||
|
||||
Resolves: #1366
|
||||
|
||||
#### pbx_lua.c: segfault when pass null data to term_color function
|
||||
Author: Alexey Khabulyak
|
||||
Date: 2025-08-14
|
||||
|
||||
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
|
||||
|
||||
Resolves: https://github.com/asterisk/asterisk/issues/1363
|
||||
|
||||
#### bridge.c: Obey BRIDGE_NOANSWER variable to skip answering channel.
|
||||
Author: Naveen Albert
|
||||
Date: 2025-08-14
|
||||
|
||||
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.
|
||||
|
||||
Resolves: #401
|
||||
Resolves: #1364
|
||||
|
174
README.html
Normal file
174
README.html
Normal file
@@ -0,0 +1,174 @@
|
||||
<html><head><title>Readme for asterisk-23.0.0-rc1</title></head><body>
|
||||
<h1>The Asterisk(R) Open Source PBX</h1>
|
||||
<pre><code>By Mark Spencer <markster@digium.com> and the Asterisk.org developer community.
|
||||
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
|
||||
</code></pre>
|
||||
<h2>SECURITY</h2>
|
||||
<p>It is imperative that you read and fully understand the contents of
|
||||
the security information document before you attempt to configure and run
|
||||
an Asterisk server.</p>
|
||||
<p>See <a href="https://docs.asterisk.org/Deployment/Important-Security-Considerations">Important Security Considerations</a> for more information.</p>
|
||||
<h2>WHAT IS ASTERISK ?</h2>
|
||||
<p>Asterisk is an Open Source PBX and telephony toolkit. It is, in a
|
||||
sense, middleware between Internet and telephony channels on the bottom,
|
||||
and Internet and telephony applications at the top. However, Asterisk supports
|
||||
more telephony interfaces than just Internet telephony. Asterisk also has a
|
||||
vast amount of support for traditional PSTN telephony, as well.</p>
|
||||
<p>For more information on the project itself, please visit the <a href="https://www.asterisk.org">Asterisk
|
||||
Home Page</a> and the official
|
||||
<a href="https://docs.asterisk.org">Asterisk Documentation</a>.</p>
|
||||
<h2>SUPPORTED OPERATING SYSTEMS</h2>
|
||||
<h3>Linux</h3>
|
||||
<p>The Asterisk Open Source PBX is developed and tested primarily on the
|
||||
GNU/Linux operating system, and is supported on every major GNU/Linux
|
||||
distribution.</p>
|
||||
<h3>Others</h3>
|
||||
<p>Asterisk has also been 'ported' and reportedly runs properly on other
|
||||
operating systems as well, Apple's Mac OS X, and the BSD variants.</p>
|
||||
<h2>GETTING STARTED</h2>
|
||||
<p>Most users are using VoIP/SIP exclusively these days but if you need to
|
||||
interface to TDM or analog services or devices, be sure you've got supported
|
||||
hardware.</p>
|
||||
<p>Supported telephony hardware includes:
|
||||
* All Analog and Digital Interface cards from Sangoma
|
||||
* Any full duplex sound card supported by PortAudio
|
||||
* The Xorcom Astribank channel bank</p>
|
||||
<h3>UPGRADING FROM AN EARLIER VERSION</h3>
|
||||
<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-23.0.0-rc1.html">Change Logs</a></p>
|
||||
<!-- END-CHANGELOGS -->
|
||||
|
||||
<h3>NEW INSTALLATIONS</h3>
|
||||
<p>Ensure that your system contains a compatible compiler and development
|
||||
libraries. Asterisk requires either the GNU Compiler Collection (GCC) version
|
||||
4.1 or higher, or a compiler that supports the C99 specification and some of
|
||||
the gcc language extensions. In addition, your system needs to have the C
|
||||
library headers available, and the headers and libraries for ncurses.</p>
|
||||
<p>There are many modules that have additional dependencies. To see what
|
||||
libraries are being looked for, see <code>./configure --help</code>, or run
|
||||
<code>make menuselect</code> to view the dependencies for specific modules.</p>
|
||||
<p>On many distributions, these dependencies are installed by packages with names
|
||||
like 'glibc-devel', 'ncurses-devel', 'openssl-devel' and 'zlib-devel'
|
||||
or similar. The <code>contrib/scripts/install_prereq</code> script can be used to install
|
||||
the dependencies for most Debian and Redhat based Linux distributions.
|
||||
The script also handles SUSE, Arch, Gentoo, FreeBSD, NetBSD and OpenBSD but
|
||||
those distributions mightnoit have complete support or they might be out of date.</p>
|
||||
<p>So, let's proceed:</p>
|
||||
<ol>
|
||||
<li>
|
||||
<p>Read the documentation.<br>
|
||||
The <a href="https://docs.asterisk.org">Asterisk Documentation</a> website has full
|
||||
information for building, installing, configuring and running Asterisk.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run <code>./configure</code><br>
|
||||
Execute the configure script to guess values for system-dependent
|
||||
variables used during compilation. If the script indicates that some required
|
||||
components are missing, you can run <code>./contrib/scripts/install_prereq install</code>
|
||||
to install the necessary components. Note that this will install all dependencies
|
||||
for every functionality of Asterisk. After running the script, you will need
|
||||
to rerun <code>./configure</code>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run <code>make menuselect</code><br>
|
||||
This is needed if you want to select the modules that will be compiled and to
|
||||
check dependencies for various optional modules.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run <code>make</code><br>
|
||||
Assuming the build completes successfully:</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run <code>make install</code><br>
|
||||
If this is your first time working with Asterisk, you may wish to install
|
||||
the sample PBX, with demonstration extensions, etc. If so, run:</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Run <code>make samples</code><br>
|
||||
Doing so will overwrite any existing configuration files you have installed.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Finally, you can launch Asterisk in the foreground mode (not a daemon) with
|
||||
<code>asterisk -vvvc</code><br>
|
||||
You'll see a bunch of verbose messages fly by your screen as Asterisk
|
||||
initializes (that's the "very very verbose" mode). When it's ready, if
|
||||
you specified the "c" then you'll get a command line console, that looks
|
||||
like this:<br>
|
||||
<code>*CLI></code><br>
|
||||
You can type <code>core show help</code> at any time to get help with the system. For help
|
||||
with a specific command, type <code>core show help <command></code>.</p>
|
||||
</li>
|
||||
</ol>
|
||||
<p><code>man asterisk</code> at the Unix/Linux command prompt will give you detailed
|
||||
information on how to start and stop Asterisk, as well as all the command
|
||||
line options for starting Asterisk.</p>
|
||||
<h3>ABOUT CONFIGURATION FILES</h3>
|
||||
<p>All Asterisk configuration files share a common format. Comments are
|
||||
delimited by <code>;</code> (since <code>#</code> of course, being a DTMF digit, may occur in
|
||||
many places). A configuration file is divided into sections whose names
|
||||
appear in <code>[]</code>'s. Each section typically contains statements in the form
|
||||
<code>variable = value</code> although you may see <code>variable => value</code> in older samples.</p>
|
||||
<h3>SPECIAL NOTE ON TIME</h3>
|
||||
<p>Those using SIP phones should be aware that Asterisk is sensitive to
|
||||
large jumps in time. Manually changing the system time using date(1)
|
||||
(or other similar commands) may cause SIP registrations and other
|
||||
internal processes to fail. For this reason, you should always use
|
||||
a time synchronization package to keep your system time accurate.
|
||||
All OS/distributions make one or more of the following packages
|
||||
available:</p>
|
||||
<ul>
|
||||
<li>ntpd/ntpsec</li>
|
||||
<li>chronyd</li>
|
||||
<li>systemd-timesyncd</li>
|
||||
</ul>
|
||||
<p>Be sure to install and configure one (and only one) of them.</p>
|
||||
<h3>FILE DESCRIPTORS</h3>
|
||||
<p>Depending on the size of your system and your configuration,
|
||||
Asterisk can consume a large number of file descriptors. In UNIX,
|
||||
file descriptors are used for more than just files on disk. File
|
||||
descriptors are also used for handling network communication
|
||||
(e.g. SIP, IAX2, or H.323 calls) and hardware access (e.g. analog and
|
||||
digital trunk hardware). Asterisk accesses many on-disk files for
|
||||
everything from configuration information to voicemail storage.</p>
|
||||
<p>Most systems limit the number of file descriptors that Asterisk can
|
||||
have open at one time. This can limit the number of simultaneous
|
||||
calls that your system can handle. For example, if the limit is set
|
||||
at 1024 (a common default value) Asterisk can handle approximately 150
|
||||
SIP calls simultaneously. To change the number of file descriptors
|
||||
follow the instructions for your system below:</p>
|
||||
<h4>PAM-BASED LINUX SYSTEM</h4>
|
||||
<p>If your system uses PAM (Pluggable Authentication Modules) edit
|
||||
<code>/etc/security/limits.conf</code>. Add these lines to the bottom of the file:</p>
|
||||
<pre><code class="language-text">root soft nofile 4096
|
||||
root hard nofile 8196
|
||||
asterisk soft nofile 4096
|
||||
asterisk hard nofile 8196
|
||||
</code></pre>
|
||||
<p>(adjust the numbers to taste). You may need to reboot the system for
|
||||
these changes to take effect.</p>
|
||||
<h4>GENERIC UNIX SYSTEM</h4>
|
||||
<p>If there are no instructions specifically adapted to your system
|
||||
above you can try adding the command <code>ulimit -n 8192</code> to the script
|
||||
that starts Asterisk.</p>
|
||||
<h2>MORE INFORMATION</h2>
|
||||
<p>Visit the <a href="https://docs.asterisk.org">Asterisk Documentation</a> website
|
||||
for more documentation on various features and please read all the
|
||||
configuration samples that include documentation on the configuration options.</p>
|
||||
<p>Finally, you may wish to join the
|
||||
<a href="https://community.asterisk.org">Asterisk Community Forums</a></p>
|
||||
<p>Welcome to the growing worldwide community of Asterisk users!</p>
|
||||
<pre><code> Mark Spencer, and the Asterisk.org development community
|
||||
</code></pre>
|
||||
<hr>
|
||||
<p>Asterisk is a trademark of Sangoma Technologies Corporation</p>
|
||||
<p>[<a href="https://www.sangoma.com/">Sangoma</a>]
|
||||
[<a href="https://www.asterisk.org">Home Page</a>]
|
||||
[<a href="https://www.asterisk.org/support">Support</a>]
|
||||
[<a href="https://docs.asterisk.org">Documentation</a>]
|
||||
[<a href="https://community.asterisk.org">Community Forums</a>]
|
||||
[<a href="https://github.com/asterisk/asterisk/releases">Release Notes</a>]
|
||||
[<a href="https://docs.asterisk.org/Deployment/Important-Security-Considerations/">Security</a>]
|
||||
[<a href="https://lists.digium.com">Mailing List Archive</a>] </p>
|
||||
</body></html>
|
@@ -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](https://downloads.asterisk.org/pub/telephony/asterisk)
|
||||
[Change Logs](ChangeLogs/ChangeLog-23.0.0-rc1.html)
|
||||
<!-- END-CHANGELOGS -->
|
||||
|
||||
### NEW INSTALLATIONS
|
||||
|
41
contrib/realtime/mysql/mysql_cdr.sql
Normal file
41
contrib/realtime/mysql/mysql_cdr.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
CREATE TABLE alembic_version (
|
||||
version_num VARCHAR(32) NOT NULL,
|
||||
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||
);
|
||||
|
||||
-- Running upgrade -> 210693f3123d
|
||||
|
||||
CREATE TABLE cdr (
|
||||
accountcode VARCHAR(20),
|
||||
src VARCHAR(80),
|
||||
dst VARCHAR(80),
|
||||
dcontext VARCHAR(80),
|
||||
clid VARCHAR(80),
|
||||
channel VARCHAR(80),
|
||||
dstchannel VARCHAR(80),
|
||||
lastapp VARCHAR(80),
|
||||
lastdata VARCHAR(80),
|
||||
start DATETIME,
|
||||
answer DATETIME,
|
||||
end DATETIME,
|
||||
duration INTEGER,
|
||||
billsec INTEGER,
|
||||
disposition VARCHAR(45),
|
||||
amaflags VARCHAR(45),
|
||||
userfield VARCHAR(256),
|
||||
uniqueid VARCHAR(150),
|
||||
linkedid VARCHAR(150),
|
||||
peeraccount VARCHAR(20),
|
||||
sequence INTEGER
|
||||
);
|
||||
|
||||
INSERT INTO alembic_version (version_num) VALUES ('210693f3123d');
|
||||
|
||||
-- Running upgrade 210693f3123d -> 54cde9847798
|
||||
|
||||
ALTER TABLE cdr MODIFY accountcode VARCHAR(80) NULL;
|
||||
|
||||
ALTER TABLE cdr MODIFY peeraccount VARCHAR(80) NULL;
|
||||
|
||||
UPDATE alembic_version SET version_num='54cde9847798' WHERE alembic_version.version_num = '210693f3123d';
|
||||
|
1737
contrib/realtime/mysql/mysql_config.sql
Normal file
1737
contrib/realtime/mysql/mysql_config.sql
Normal file
File diff suppressed because it is too large
Load Diff
25
contrib/realtime/mysql/mysql_queue_log.sql
Normal file
25
contrib/realtime/mysql/mysql_queue_log.sql
Normal file
@@ -0,0 +1,25 @@
|
||||
CREATE TABLE alembic_version (
|
||||
version_num VARCHAR(32) NOT NULL,
|
||||
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||
);
|
||||
|
||||
-- Running upgrade -> 4105ee839f58
|
||||
|
||||
CREATE TABLE queue_log (
|
||||
id BIGINT NOT NULL AUTO_INCREMENT,
|
||||
time DATETIME,
|
||||
callid VARCHAR(80),
|
||||
queuename VARCHAR(256),
|
||||
agent VARCHAR(80),
|
||||
event VARCHAR(32),
|
||||
data1 VARCHAR(100),
|
||||
data2 VARCHAR(100),
|
||||
data3 VARCHAR(100),
|
||||
data4 VARCHAR(100),
|
||||
data5 VARCHAR(100),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE (id)
|
||||
);
|
||||
|
||||
INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58');
|
||||
|
47
contrib/realtime/mysql/mysql_voicemail.sql
Normal file
47
contrib/realtime/mysql/mysql_voicemail.sql
Normal file
@@ -0,0 +1,47 @@
|
||||
CREATE TABLE alembic_version (
|
||||
version_num VARCHAR(32) NOT NULL,
|
||||
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||
);
|
||||
|
||||
-- Running upgrade -> a2e9769475e
|
||||
|
||||
CREATE TABLE voicemail_messages (
|
||||
dir VARCHAR(255) NOT NULL,
|
||||
msgnum INTEGER NOT NULL,
|
||||
context VARCHAR(80),
|
||||
macrocontext VARCHAR(80),
|
||||
callerid VARCHAR(80),
|
||||
origtime INTEGER,
|
||||
duration INTEGER,
|
||||
recording BLOB,
|
||||
flag VARCHAR(30),
|
||||
category VARCHAR(30),
|
||||
mailboxuser VARCHAR(30),
|
||||
mailboxcontext VARCHAR(30),
|
||||
msg_id VARCHAR(40)
|
||||
);
|
||||
|
||||
ALTER TABLE voicemail_messages ADD CONSTRAINT voicemail_messages_dir_msgnum PRIMARY KEY (dir, msgnum);
|
||||
|
||||
CREATE INDEX voicemail_messages_dir ON voicemail_messages (dir);
|
||||
|
||||
INSERT INTO alembic_version (version_num) VALUES ('a2e9769475e');
|
||||
|
||||
-- Running upgrade a2e9769475e -> 39428242f7f5
|
||||
|
||||
ALTER TABLE voicemail_messages MODIFY recording BLOB(4294967295) NULL;
|
||||
|
||||
UPDATE alembic_version SET version_num='39428242f7f5' WHERE alembic_version.version_num = 'a2e9769475e';
|
||||
|
||||
-- Running upgrade 39428242f7f5 -> 1c55c341360f
|
||||
|
||||
ALTER TABLE voicemail_messages DROP COLUMN macrocontext;
|
||||
|
||||
UPDATE alembic_version SET version_num='1c55c341360f' WHERE alembic_version.version_num = '39428242f7f5';
|
||||
|
||||
-- Running upgrade 1c55c341360f -> 64fae6bbe7fb
|
||||
|
||||
DROP INDEX voicemail_messages_dir ON voicemail_messages;
|
||||
|
||||
UPDATE alembic_version SET version_num='64fae6bbe7fb' WHERE alembic_version.version_num = '1c55c341360f';
|
||||
|
45
contrib/realtime/postgresql/postgresql_cdr.sql
Normal file
45
contrib/realtime/postgresql/postgresql_cdr.sql
Normal file
@@ -0,0 +1,45 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE alembic_version (
|
||||
version_num VARCHAR(32) NOT NULL,
|
||||
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||
);
|
||||
|
||||
-- Running upgrade -> 210693f3123d
|
||||
|
||||
CREATE TABLE cdr (
|
||||
accountcode VARCHAR(20),
|
||||
src VARCHAR(80),
|
||||
dst VARCHAR(80),
|
||||
dcontext VARCHAR(80),
|
||||
clid VARCHAR(80),
|
||||
channel VARCHAR(80),
|
||||
dstchannel VARCHAR(80),
|
||||
lastapp VARCHAR(80),
|
||||
lastdata VARCHAR(80),
|
||||
start TIMESTAMP WITHOUT TIME ZONE,
|
||||
answer TIMESTAMP WITHOUT TIME ZONE,
|
||||
"end" TIMESTAMP WITHOUT TIME ZONE,
|
||||
duration INTEGER,
|
||||
billsec INTEGER,
|
||||
disposition VARCHAR(45),
|
||||
amaflags VARCHAR(45),
|
||||
userfield VARCHAR(256),
|
||||
uniqueid VARCHAR(150),
|
||||
linkedid VARCHAR(150),
|
||||
peeraccount VARCHAR(20),
|
||||
sequence INTEGER
|
||||
);
|
||||
|
||||
INSERT INTO alembic_version (version_num) VALUES ('210693f3123d') RETURNING alembic_version.version_num;
|
||||
|
||||
-- Running upgrade 210693f3123d -> 54cde9847798
|
||||
|
||||
ALTER TABLE cdr ALTER COLUMN accountcode TYPE VARCHAR(80);
|
||||
|
||||
ALTER TABLE cdr ALTER COLUMN peeraccount TYPE VARCHAR(80);
|
||||
|
||||
UPDATE alembic_version SET version_num='54cde9847798' WHERE alembic_version.version_num = '210693f3123d';
|
||||
|
||||
COMMIT;
|
||||
|
1863
contrib/realtime/postgresql/postgresql_config.sql
Normal file
1863
contrib/realtime/postgresql/postgresql_config.sql
Normal file
File diff suppressed because it is too large
Load Diff
29
contrib/realtime/postgresql/postgresql_queue_log.sql
Normal file
29
contrib/realtime/postgresql/postgresql_queue_log.sql
Normal file
@@ -0,0 +1,29 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE alembic_version (
|
||||
version_num VARCHAR(32) NOT NULL,
|
||||
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||
);
|
||||
|
||||
-- Running upgrade -> 4105ee839f58
|
||||
|
||||
CREATE TABLE queue_log (
|
||||
id BIGSERIAL NOT NULL,
|
||||
time TIMESTAMP WITHOUT TIME ZONE,
|
||||
callid VARCHAR(80),
|
||||
queuename VARCHAR(256),
|
||||
agent VARCHAR(80),
|
||||
event VARCHAR(32),
|
||||
data1 VARCHAR(100),
|
||||
data2 VARCHAR(100),
|
||||
data3 VARCHAR(100),
|
||||
data4 VARCHAR(100),
|
||||
data5 VARCHAR(100),
|
||||
PRIMARY KEY (id),
|
||||
UNIQUE (id)
|
||||
);
|
||||
|
||||
INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58') RETURNING alembic_version.version_num;
|
||||
|
||||
COMMIT;
|
||||
|
51
contrib/realtime/postgresql/postgresql_voicemail.sql
Normal file
51
contrib/realtime/postgresql/postgresql_voicemail.sql
Normal file
@@ -0,0 +1,51 @@
|
||||
BEGIN;
|
||||
|
||||
CREATE TABLE alembic_version (
|
||||
version_num VARCHAR(32) NOT NULL,
|
||||
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
|
||||
);
|
||||
|
||||
-- Running upgrade -> a2e9769475e
|
||||
|
||||
CREATE TABLE voicemail_messages (
|
||||
dir VARCHAR(255) NOT NULL,
|
||||
msgnum INTEGER NOT NULL,
|
||||
context VARCHAR(80),
|
||||
macrocontext VARCHAR(80),
|
||||
callerid VARCHAR(80),
|
||||
origtime INTEGER,
|
||||
duration INTEGER,
|
||||
recording BYTEA,
|
||||
flag VARCHAR(30),
|
||||
category VARCHAR(30),
|
||||
mailboxuser VARCHAR(30),
|
||||
mailboxcontext VARCHAR(30),
|
||||
msg_id VARCHAR(40)
|
||||
);
|
||||
|
||||
ALTER TABLE voicemail_messages ADD CONSTRAINT voicemail_messages_dir_msgnum PRIMARY KEY (dir, msgnum);
|
||||
|
||||
CREATE INDEX voicemail_messages_dir ON voicemail_messages (dir);
|
||||
|
||||
INSERT INTO alembic_version (version_num) VALUES ('a2e9769475e') RETURNING alembic_version.version_num;
|
||||
|
||||
-- Running upgrade a2e9769475e -> 39428242f7f5
|
||||
|
||||
ALTER TABLE voicemail_messages ALTER COLUMN recording TYPE BYTEA;
|
||||
|
||||
UPDATE alembic_version SET version_num='39428242f7f5' WHERE alembic_version.version_num = 'a2e9769475e';
|
||||
|
||||
-- Running upgrade 39428242f7f5 -> 1c55c341360f
|
||||
|
||||
ALTER TABLE voicemail_messages DROP COLUMN macrocontext;
|
||||
|
||||
UPDATE alembic_version SET version_num='1c55c341360f' WHERE alembic_version.version_num = '39428242f7f5';
|
||||
|
||||
-- Running upgrade 1c55c341360f -> 64fae6bbe7fb
|
||||
|
||||
DROP INDEX voicemail_messages_dir;
|
||||
|
||||
UPDATE alembic_version SET version_num='64fae6bbe7fb' WHERE alembic_version.version_num = '1c55c341360f';
|
||||
|
||||
COMMIT;
|
||||
|
Reference in New Issue
Block a user