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