Files
asterisk/ChangeLogs/ChangeLog-21.7.0-rc1.md
Asterisk Development Team 335240f45c Update for 21.7.0-rc1
2025-01-23 18:39:45 +00:00

1013 lines
39 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Change Log for Release asterisk-21.7.0-rc1
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-21.7.0-rc1.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/21.6.1...21.7.0-rc1)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21.7.0-rc1.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
### Summary:
- Commits: 50
- Commit Authors: 20
- Issues Resolved: 17
- Security Advisories Resolved: 0
### User Notes:
- #### sig_analog: Add Last Number Redial feature.
Users can now redial the last number
called if the lastnumredial setting is set to yes.
Resolves: #437
- #### Add SHA-256 and SHA-512-256 as authentication digest algorithms
The SHA-256 and SHA-512-256 algorithms are now available
for authentication as both a UAS and a UAC.
- #### Upgrade bundled pjproject to 2.15.1 Resolves: asterisk#1016
Bundled pjproject has been upgraded to 2.15.1. For more
information visit pjproject Github page: https://github.com/pjsip/pjproject/releases/tag/2.15.1
- #### res_pjsip: Add new AOR option "qualify_2xx_only"
The pjsip.conf AOR section now has a "qualify_2xx_only"
option that can be set so that only 2XX responses to OPTIONS requests
used to qualify a contact will mark the contact as available.
- #### app_queue: allow dynamically adding a queue member in paused state.
use the p option of AddQueueMember() for paused member state.
Optionally, use the r(reason) option to specify a custom reason for the pause.
- #### manager.c: Add Processed Call Count to CoreStatus output
The current processed call count is now returned as CoreProcessedCalls from the
CoreStatus AMI Action.
- #### func_curl.c: Add additional CURL options for SSL requests
The following new configuration options are now available
in the res_curl.conf file, and the CURL() function: 'ssl_verifyhost'
(CURLOPT_SSL_VERIFYHOST), 'ssl_cainfo' (CURLOPT_CAINFO), 'ssl_capath'
(CURLOPT_CAPATH), 'ssl_cert' (CURLOPT_SSLCERT), 'ssl_certtype'
(CURLOPT_SSLCERTTYPE), 'ssl_key' (CURLOPT_SSLKEY), 'ssl_keytype',
(CURLOPT_SSLKEYTYPE) and 'ssl_keypasswd' (CURLOPT_KEYPASSWD). See the
libcurl documentation for more details.
- #### res_stir_shaken: Allow sending Identity headers for unknown TNs
You can now set the "unknown_tn_attest_level" option
in the attestation and/or profile objects in stir_shaken.conf to
enable sending Identity headers for callerid TNs not explicitly
configured.
### Upgrade Notes:
### Commit Authors:
- Abdelkader Boudih: (3)
- Alexey Khabulyak: (1)
- Alexey Vasilyev: (1)
- Allan Nathanson: (2)
- Artem Umerov: (1)
- George Joseph: (14)
- Jaco Kroon: (1)
- James Terhune: (1)
- Joshua C. Colp: (1)
- Kent: (1)
- Maksim Nesterov: (1)
- Maximilian Fridrich: (1)
- Mike Pultz: (3)
- Naveen Albert: (6)
- Sean Bright: (6)
- Sperl Viktor: (2)
- Stanislav Abramenkov: (2)
- Steffen Arntz: (1)
- Tinet-Mucw: (1)
- Viktor Litvinov: (1)
## Issue and Commit Detail:
### Closed Issues:
- 437: [new-feature]: sig_analog: Add Last Number Redial
- 851: [bug]: unable to read audiohook both side when packet lost on one side of the call
- 921: [bug]: Stir-Shaken doesnt allow B or C attestation for unknown callerid which is allowed by ATIS-1000074.v003, §5.2.4
- 927: [bug]: no audio when media source changed during the call
- 948: [improvement]: Support SHA-256 algorithm on REGISTER and INVITE challenges
- 993: [bug]: sig_analog: Feature Group D / E911 no longer work
- 999: [bug]: Crash when setting a global variable with invalid UTF8 characters
- 1007: [improvement]: Cannot dynamically add queue member in paused state from dialplan or command line
- 1013: [improvement]: chan_pjsip: Send VIDUPDATE RTP frames for H.264 streams on endpoints without WebRTC
- 1021: [improvement]: proper queue_log paused state when member added dynamically
- 1023: [improvement]: Improve PJSIP_MEDIA_OFFER documentation
- 1028: [bug]: "pjsip show endpoints" shows some identifies on endpoints that shouldn't be there
- 1029: [bug]: chan_dahdi: Wrong channel state set when RINGING received
- 1054: [bug]: chan_iax2: Frames unnecessarily backlogged with jitterbuffer if no voice frames have been received yet
- 1058: [bug]: Asterisk fails to compile following commit 71a2e8c on Ubuntu 20.04
- 1064: [improvement]: ast_tls_script: Add option to skip passphrase for CA private key
- 1075: [bug]: res_prometheus does not set Content-Type header in HTTP response
### Commits By Author:
- #### Abdelkader Boudih (3):
- normalize contrib/ast-db-manage/queue_log.ini.sample
- res_config_pgsql: normalize database connection option with cel and cdr by sup..
- samples: Use "asterisk" instead of "postgres" for username
- #### Alexey Khabulyak (1):
- format_gsm.c: Added mime type
- #### Alexey Vasilyev (1):
- res_rtp_asterisk.c: Fix bridged_payload matching with sample rate for DTMF
- #### Allan Nathanson (2):
- config.c: retain leading whitespace before comments
- config.c: fix #tryinclude being converted to #include on rewrite
- #### Artem Umerov (1):
- logger.h: Fix build when AST_DEVMODE is not defined.
- #### George Joseph (14):
- res_stir_shaken: Allow sending Identity headers for unknown TNs
- Allow C++ source files (as extension .cc) in the main directory
- Add ability to pass arguments to unit tests from the CLI
- Header fixes for compiling C++ source files
- gcc14: Fix issues caught by gcc 14
- Add C++ Standard detection to configure and fix a new C++20 compile issue
- Add SHA-256 and SHA-512-256 as authentication digest algorithms
- docs: Enable since/version handling for XML, CLI and ARI documentation
- docs: Various XML fixes
- res_pjsip_authenticator_digest: Fix issue with missing auth and DONT_OPTIMIZE
- docs: Add version information to configObject and configOption XML elements
- README.md, asterisk.c: Update Copyright Dates
- docs: Add version information to manager event instance XML elements
- docs: Add version information to application and function XML elements
- #### Jaco Kroon (1):
- res_odbc: release threads from potential starvation.
- #### James Terhune (1):
- main/stasis_channels.c: Fix crash when setting a global variable with invalid ..
- #### Joshua C. Colp (1):
- LICENSE: Update company name, email, and address.
- #### Kent (1):
- res_pjsip: Add new AOR option "qualify_2xx_only"
- #### Maksim Nesterov (1):
- func_uuid: Add a new dialplan function to generate UUIDs
- #### Maximilian Fridrich (1):
- chan_pjsip: Send VIDUPDATE RTP frame for all H.264 streams
- #### Mike Pultz (3):
- func_curl.c: Add additional CURL options for SSL requests
- manager.c: Add Processed Call Count to CoreStatus output
- res_curl.conf.sample: clean up sample configuration and add new SSL options
- #### Naveen Albert (6):
- sig_analog: Fix regression with FGD and E911 signaling.
- chan_iax2: Add log message for rejected calls.
- chan_dahdi: Fix wrong channel state when RINGING recieved.
- sig_analog: Add Last Number Redial feature.
- chan_iax2: Avoid unnecessarily backlogging non-voice frames.
- ast_tls_cert: Add option to skip passphrase for CA private key.
- #### Sean Bright (6):
- config.c: Fix off-nominal reference leak.
- manager.c: Rename restrictedFile to is_restricted_file.
- manager: Add `<since>` tags for all AMI actions.
- dialplan_functions_doc.xml: Document PJSIP_MEDIA_OFFER's `media` argument.
- strings.c: Improve numeric detection in `ast_strings_match()`.
- res_prometheus.c: Set Content-Type header on /metrics response.
- #### Sperl Viktor (2):
- app_queue: allow dynamically adding a queue member in paused state.
- app_queue: indicate the paused state of a dynamically added member in queue_log.
- #### Stanislav Abramenkov (2):
- Upgrade bundled pjproject to 2.15.1 Resolves: asterisk#1016
- res_pjproject: Fix typo (OpenmSSL->OpenSSL)
- #### Steffen Arntz (1):
- logger.c fix: malformed JSON template
- #### Tinet-mucw (1):
- audiohook.c: resolving the issue with audiohook both reading when packet loss ..
- #### Viktor Litvinov (1):
- res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big
### Commit List:
- docs: Add version information to application and function XML elements
- docs: Add version information to manager event instance XML elements
- LICENSE: Update company name, email, and address.
- res_prometheus.c: Set Content-Type header on /metrics response.
- README.md, asterisk.c: Update Copyright Dates
- docs: Add version information to configObject and configOption XML elements
- res_pjsip_authenticator_digest: Fix issue with missing auth and DONT_OPTIMIZE
- ast_tls_cert: Add option to skip passphrase for CA private key.
- chan_iax2: Avoid unnecessarily backlogging non-voice frames.
- config.c: fix #tryinclude being converted to #include on rewrite
- sig_analog: Add Last Number Redial feature.
- docs: Various XML fixes
- strings.c: Improve numeric detection in `ast_strings_match()`.
- docs: Enable since/version handling for XML, CLI and ARI documentation
- logger.h: Fix build when AST_DEVMODE is not defined.
- dialplan_functions_doc.xml: Document PJSIP_MEDIA_OFFER's `media` argument.
- samples: Use "asterisk" instead of "postgres" for username
- manager: Add `<since>` tags for all AMI actions.
- logger.c fix: malformed JSON template
- manager.c: Rename restrictedFile to is_restricted_file.
- res_pjproject: Fix typo (OpenmSSL->OpenSSL)
- Add SHA-256 and SHA-512-256 as authentication digest algorithms
- config.c: retain leading whitespace before comments
- config.c: Fix off-nominal reference leak.
- normalize contrib/ast-db-manage/queue_log.ini.sample
- Add C++ Standard detection to configure and fix a new C++20 compile issue
- chan_dahdi: Fix wrong channel state when RINGING recieved.
- Upgrade bundled pjproject to 2.15.1 Resolves: asterisk#1016
- gcc14: Fix issues caught by gcc 14
- Header fixes for compiling C++ source files
- Add ability to pass arguments to unit tests from the CLI
- res_pjsip: Add new AOR option "qualify_2xx_only"
- res_odbc: release threads from potential starvation.
- Allow C++ source files (as extension .cc) in the main directory
- format_gsm.c: Added mime type
- func_uuid: Add a new dialplan function to generate UUIDs
- app_queue: allow dynamically adding a queue member in paused state.
- chan_iax2: Add log message for rejected calls.
- chan_pjsip: Send VIDUPDATE RTP frame for all H.264 streams
- res_curl.conf.sample: clean up sample configuration and add new SSL options
- res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big
- res_rtp_asterisk.c: Fix bridged_payload matching with sample rate for DTMF
- manager.c: Add Processed Call Count to CoreStatus output
- func_curl.c: Add additional CURL options for SSL requests
- sig_analog: Fix regression with FGD and E911 signaling.
- res_stir_shaken: Allow sending Identity headers for unknown TNs
### Commit Details:
#### docs: Add version information to application and function XML elements
Author: George Joseph
Date: 2025-01-23
* Do a git blame on the embedded XML application or function element.
* From the commit hash, grab the summary line.
* Do a git log --grep <summary> to find the cherry-pick commits in all
branches that match.
* Do a git patch-id to ensure the commits are all related and didn't get
a false match on the summary.
* Do a git tag --contains <commit> to find the tags that contain each
commit.
* Weed out all tags not ..0.
* Sort and discard any .0.0 and following tags where the commit
appeared in an earlier branch.
* The result is a single tag for each branch where the application or function
was defined.
The applications and functions defined in the following files were done by
hand because the XML was extracted from the C source file relatively recently.
* channels/pjsip/dialplan_functions_doc.xml
* main/logger_doc.xml
* main/manager_doc.xml
* res/res_geolocation/geoloc_doc.xml
* res/res_stir_shaken/stir_shaken_doc.xml
#### docs: Add version information to manager event instance XML elements
Author: George Joseph
Date: 2025-01-20
* Do a git blame on the embedded XML managerEvent elements.
* From the commit hash, grab the summary line.
* Do a git log --grep <summary> to find the cherry-pick commits in all
branches that match.
* Do a git patch-id to ensure the commits are all related and didn't get
a false match on the summary.
* Do a git tag --contains <commit> to find the tags that contain each
commit.
* Weed out all tags not ..0.
* Sort and discard any .0.0 and following tags where the commit
appeared in an earlier branch.
* The result is a single tag for each branch where the application or function
was defined.
The events defined in res/res_pjsip/pjsip_manager.xml were done by hand
because the XML was extracted from the C source file relatively recently.
Two bugs were fixed along the way...
* The get_documentation awk script was exiting after it processed the first
DOCUMENTATION block it found in a file. We have at least 1 source file
with multiple DOCUMENTATION blocks so only the first one in them was being
processed. The awk script was changed to continue searching rather
than exiting after the first block.
* Fixing the awk script revealed an issue in logger.c where the third
DOCUMENTATION block contained a XML fragment that consisted only of
a managerEventInstance element that wasn't wrapped in a managerEvent
element. Since logger_doc.xml already existed, the remaining fragments
in logger.c were moved to it and properly organized.
#### LICENSE: Update company name, email, and address.
Author: Joshua C. Colp
Date: 2025-01-21
#### res_prometheus.c: Set Content-Type header on /metrics response.
Author: Sean Bright
Date: 2025-01-21
This should resolve the Prometheus error:
> Error scraping target: non-compliant scrape target
sending blank Content-Type and no
fallback_scrape_protocol specified for target.
Resolves: #1075
#### README.md, asterisk.c: Update Copyright Dates
Author: George Joseph
Date: 2025-01-20
#### docs: Add version information to configObject and configOption XML elements
Author: George Joseph
Date: 2025-01-16
Most of the configObjects and configOptions that are implemented with
ACO or Sorcery now have `<since>/<version>` elements added. There are
probably some that the script I used didn't catch. The version tags were
determined by the following...
* Do a git blame on the API call that created the object or option.
* From the commit hash, grab the summary line.
* Do a `git log --grep <summary>` to find the cherry-pick commits in all
branches that match.
* Do a `git patch-id` to ensure the commits are all related and didn't get
a false match on the summary.
* Do a `git tag --contains <commit>` to find the tags that contain each
commit.
* Weed out all tags not <major>.<minor>.0.
* Sort and discard any <major>.0.0 and following tags where the commit
appeared in an earlier branch.
* The result is a single tag for each branch where the API was last touched.
configObjects and configOptions elements implemented with the base
ast_config APIs were just not possible to find due to the non-deterministic
way they are accessed.
Also note that if the API call was on modified after it was added, the
version will be the one it was last modified in.
Final note: The configObject and configOption elements were introduced in
12.0.0 so options created before then may not have any XML documentation.
#### res_pjsip_authenticator_digest: Fix issue with missing auth and DONT_OPTIMIZE
Author: George Joseph
Date: 2025-01-17
The return code fom digest_check_auth wasn't explicitly being initialized.
The return code also wasn't explicitly set to CHALLENGE when challenges
were sent. When optimization was turned off (DONT_OPTIMIZE), the compiler
was setting it to "0"(CHALLENGE) which worked fine. However, with
optimization turned on, it was setting it to "1" (SUCCESS) so if there was
no incoming Authorization header, the function was returning SUCCESS to the
distributor allowing the request to incorrectly succeed.
The return code is now initialized correctly and is now explicitly set
to CHALLENGE when we send challenges.
#### ast_tls_cert: Add option to skip passphrase for CA private key.
Author: Naveen Albert
Date: 2025-01-14
Currently, the ast_tls_cert file is hardcoded to use the -des3 option
for 3DES encryption, and the script needs to be manually modified
to not require a passphrase. Add an option (-e) that disables
encryption of the CA private key so no passphrase is required.
Resolves: #1064
#### chan_iax2: Avoid unnecessarily backlogging non-voice frames.
Author: Naveen Albert
Date: 2025-01-09
Currently, when receiving an unauthenticated call, we keep track
of the negotiated format in the chosenformat, which allows us
to later create the channel using the right format. However,
this was not done for authenticated calls. This meant that in
certain circumstances, if we had not yet received a voice frame
from the peer, only certain other types of frames (e.g. text),
there were no variables containing the appropriate frame.
This led to problems in the jitterbuffer callback where we
unnecessarily bailed out of retrieving a frame from the jitterbuffer.
This was logic intentionally added in commit 73103bdcd5b342ce5dfa32039333ffadad551151
in response to an earlier regression, and while this prevents
crashes, it also backlogs legitimate frames unnecessarily.
The abort logic was initially added because at this point in the
code, we did not have the negotiated format available to us.
However, it should always be available to us as a last resort
in chosenformat, so we now pull it from there if needed. This
allows us to process frames the jitterbuffer even if voicefmt
and peerfmt aren't set and still avoid the crash. The failsafe
logic is retained, but now it shouldn't be triggered anymore.
Resolves: #1054
#### config.c: fix #tryinclude being converted to #include on rewrite
Author: Allan Nathanson
Date: 2024-09-16
Correct an issue in ast_config_text_file_save2() when updating configuration
files with "#tryinclude" statements. The API currently replaces "#tryinclude"
with "#include". The API also creates empty template files if the referenced
files do not exist. This change resolves these problems.
Resolves: https://github.com/asterisk/asterisk/issues/920
#### sig_analog: Add Last Number Redial feature.
Author: Naveen Albert
Date: 2023-11-10
This adds the Last Number Redial feature to
simple switch.
UserNote: Users can now redial the last number
called if the lastnumredial setting is set to yes.
Resolves: #437
#### docs: Various XML fixes
Author: George Joseph
Date: 2025-01-15
* channels/pjsip/dialplan_functions_doc.xml: Added xmlns:xi to docs element.
* main/bucket.c: Removed XML completely since the "bucket" and "file" objects
are internal only with no config file.
* main/named_acl.c: Fixed the configFile element name. It was "named_acl.conf"
and should have been "acl.conf"
* res/res_geolocation/geoloc_doc.xml: Added xmlns:xi to docs element.
* res/res_http_media_cache.c: Fixed the configFile element name. It was
"http_media_cache.conf" and should have been "res_http_media_cache.conf".
#### strings.c: Improve numeric detection in `ast_strings_match()`.
Author: Sean Bright
Date: 2025-01-15
Essentially, we were treating 1234x1234 and 1234x5678 as 'equal'
because we were able to convert the prefix of each of these strings to
the same number.
Resolves: #1028
#### docs: Enable since/version handling for XML, CLI and ARI documentation
Author: George Joseph
Date: 2025-01-09
* Added the "since" element to the XML configObject and configOption elements
in appdocsxml.dtd.
* Added the "Since" section to the following CLI output:
```
config show help <module> <object>
config show help <module> <object> <option>
core show application <app>
core show function <func>
manager show command <command>
manager show event <event>
agi show commands topic <topic>
```
* Refactored the commands above to output their sections in the same order:
Synopsis, Since, Description, Syntax, Arguments, SeeAlso
* Refactored the commands above so they all use the same pattern for writing
the output to the CLI.
* Fixed several memory leaks caused by failure to free temporary output
buffers.
* Added a "since" array to the mustache template for the top-level resources
(Channel, Endpoint, etc.) and to the paths/methods underneath them. These
will be added to the generated markdown if present.
Example:
```
"resourcePath": "/api-docs/channels.{format}",
"requiresModules": [
"res_stasis_answer",
"res_stasis_playback",
"res_stasis_recording",
"res_stasis_snoop"
],
"since": [
"18.0.0",
"21.0.0"
],
"apis": [
{
"path": "/channels",
"description": "Active channels",
"operations": [
{
"httpMethod": "GET",
"since": [
"18.6.0",
"21.8.0"
],
"summary": "List all active channels in Asterisk.",
"nickname": "list",
"responseClass": "List[Channel]"
},
```
NOTE: No versioning information is actually added in this commit.
Those will be added separately and instructions for adding and maintaining
them will be published on the documentation site at a later date.
#### logger.h: Fix build when AST_DEVMODE is not defined.
Author: Artem Umerov
Date: 2025-01-13
Resolves: #1058
#### dialplan_functions_doc.xml: Document PJSIP_MEDIA_OFFER's `media` argument.
Author: Sean Bright
Date: 2025-01-14
Resolves: #1023
#### samples: Use "asterisk" instead of "postgres" for username
Author: Abdelkader Boudih
Date: 2025-01-07
#### manager: Add `<since>` tags for all AMI actions.
Author: Sean Bright
Date: 2025-01-02
#### logger.c fix: malformed JSON template
Author: Steffen Arntz
Date: 2025-01-08
this typo was mentioned before, but never got fixed.
https://community.asterisk.org/t/logger-cannot-log-long-json-lines-properly/87618/6
#### manager.c: Rename restrictedFile to is_restricted_file.
Author: Sean Bright
Date: 2025-01-09
Also correct the spelling of 'privileges.'
#### res_config_pgsql: normalize database connection option with cel and cdr by sup..
Author: Abdelkader Boudih
Date: 2025-01-08
#### res_pjproject: Fix typo (OpenmSSL->OpenSSL)
Author: Stanislav Abramenkov
Date: 2025-01-10
Fix typo (OpenmSSL->OpenSSL) mentioned by bkford in #972
#### Add SHA-256 and SHA-512-256 as authentication digest algorithms
Author: George Joseph
Date: 2024-10-17
* Refactored pjproject code to support the new algorithms and
added a patch file to third-party/pjproject/patches
* Added new parameters to the pjsip auth object:
* password_digest = <algorithm>:<digest>
* supported_algorithms_uac = List of algorithms to support
when acting as a UAC.
* supported_algorithms_uas = List of algorithms to support
when acting as a UAS.
See the auth object in pjsip.conf.sample for detailed info.
* Updated both res_pjsip_authenticator_digest.c (for UAS) and
res_pjsip_outbound_authentocator_digest.c (UAC) to suport the
new algorithms.
The new algorithms are only available with the bundled version
of pjproject, or an external version > 2.14.1. OpenSSL version
1.1.1 or greater is required to support SHA-512-256.
Resolves: #948
UserNote: The SHA-256 and SHA-512-256 algorithms are now available
for authentication as both a UAS and a UAC.
#### config.c: retain leading whitespace before comments
Author: Allan Nathanson
Date: 2024-10-30
Configurations loaded with the ast_config_load2() API and later written
out with ast_config_text_file_save2() will have any leading whitespace
stripped away. The APIs should make reasonable efforts to maintain the
content and formatting of the configuration files.
This change retains any leading whitespace from comment lines that start
with a ";".
Resolves: https://github.com/asterisk/asterisk/issues/970
#### config.c: Fix off-nominal reference leak.
Author: Sean Bright
Date: 2025-01-07
This was identified and fixed by @Allan-N in #918 but it is an
important fix in its own right.
The fix here is slightly different than Allan's in that we just move
the initialization of the problematic AO2 container to where it is
first used.
Fixes #1046
#### normalize contrib/ast-db-manage/queue_log.ini.sample
Author: Abdelkader Boudih
Date: 2025-01-05
#### Add C++ Standard detection to configure and fix a new C++20 compile issue
Author: George Joseph
Date: 2025-01-03
* The autoconf-archive package contains macros useful for detecting C++
standard and testing other C++ capabilities but that package was never
included in the install_prereq script so many existing build environments
won't have it. Even if it is installed, older versions won't newer C++
standards and will actually cause an error if you try to test for that
version. To make it available for those environments, the
ax_cxx_compile_stdcxx.m4 macro has copied from the latest release of
autoconf-archive into the autoconf directory.
* A convenience wrapper(ast_cxx_check_std) around ax_cxx_compile_stdcxx was
also added so checking the standard version and setting the
asterisk-specific PBX_ variables becomes a one-liner:
`AST_CXX_CHECK_STD([std], [force_latest_std])`.
Calling that with a version of `17` for instance, will set PBX_CXX17
to 0 or 1 depending on whether the current c++ compiler supports stdc++17.
HAVE_CXX17 will also be 'defined" or not depending on the result.
* C++ compilers hardly ever default to the latest standard they support. g++
version 14 for instance supports up to C++23 but only uses C++17 by default.
If you want to use C++23, you have to add `-std=gnu++=23` to the g++
command line. If you set the second argument of AST_CXX_CHECK_STD to "yes",
the macro will automatically keep the highest `-std=gnu++` value that
worked and pass that to the Makefiles.
* The autoconf-archive package was added to install_prereq for future use.
* Updated configure.ac to use AST_CXX_CHECK_STD() to check for C++
versions 11, 14, 17, 20 and 23.
* Updated configure.ac to accept the `--enable-latest-cxx-std` option which
will set the second option to AST_CXX_CHECK_STD() to "yes". The default
is "no".
* ast_copy_string() in strings.h declares the 'sz' variable as volatile and
does an `sz--` on it later. C++20 no longer allows the `++` and `--`
increment and decrement operators to be used on variables declared as
volatile however so that was changed to `sz -= 1`.
#### chan_dahdi: Fix wrong channel state when RINGING recieved.
Author: Naveen Albert
Date: 2024-12-16
Previously, when AST_CONTROL_RINGING was received by
a DAHDI device, it would set its channel state to
AST_STATE_RINGING. However, an analysis of the codebase
and other channel drivers reveals RINGING corresponds to
physical power ringing, whereas AST_STATE_RING should be
used for audible ringback on the channel. This also ensures
the correct device state is returned by the channel state
to device state conversion.
Since there seems to be confusion in various places regarding
AST_STATE_RING vs. AST_STATE_RINGING, some documentation has
been added or corrected to clarify the actual purposes of these
two channel states, and the associated device state mapping.
An edge case that prompted this fix, but isn't explicitly
addressed here, is that of an incoming call to an FXO port.
The channel state will be "Ring", which maps to a device state
of "In Use", not "Ringing" as would be more intuitive. However,
this is semantic, since technically, Asterisk is treating this
the same as any other incoming call, and so "Ring" is the
semantic state (put another way, Asterisk isn't ringing anything,
like in the cases where channels are in the "Ringing" state).
Since FXO ports don't currently support Call Waiting, a suitable
workaround for the above would be to ignore the device state and
instead check the channel state (e.g. IMPORT(DAHDI/1-1,CHANNEL(state)))
since it will be Ring if the FXO port is idle (but a call is ringing
on it) and Up if the FXO port is actually in use. (In both cases,
the device state would misleadingly be "In Use".)
Resolves: #1029
#### Upgrade bundled pjproject to 2.15.1 Resolves: asterisk#1016
Author: Stanislav Abramenkov
Date: 2024-12-03
UserNote: Bundled pjproject has been upgraded to 2.15.1. For more
information visit pjproject Github page: https://github.com/pjsip/pjproject/releases/tag/2.15.1
#### gcc14: Fix issues caught by gcc 14
Author: George Joseph
Date: 2025-01-03
* test_message.c: Fix segfaults caused by passing NULL as an sprintf fmt.
#### Header fixes for compiling C++ source files
Author: George Joseph
Date: 2024-12-31
A few tweaks needed to be done to some existing header files to allow them to
be compiled when included from C++ source files.
logger.h had declarations for ast_register_verbose() and
ast_unregister_verbose() which caused C++ issues but those functions were
actually removed from logger.c many years ago so the declarations were just
removed from logger.h.
#### Add ability to pass arguments to unit tests from the CLI
Author: George Joseph
Date: 2024-12-27
Unit tests can now be passed custom arguments from the command
line. For example, the following command would run the "mytest" test
in the "/main/mycat" category with the option "myoption=54"
`CLI> test execute category /main/mycat name mytest options myoption=54`
You can also pass options to an entire category...
`CLI> test execute category /main/mycat options myoption=54`
Basically, everything after the "options" keyword is passed verbatim to
the test which must decide what to do with it.
* A new API ast_test_get_cli_args() was created to give the tests access to
the cli_args->argc and cli_args->argv elements.
* Although not needed for the option processing, a new macro
ast_test_validate_cleanup_custom() was added to test.h that allows you
to specify a custom error message instead of just "Condition failed".
* The test_skel.c was updated to demonstrate parsing options and the use
of the ast_test_validate_cleanup_custom() macro.
#### res_pjsip: Add new AOR option "qualify_2xx_only"
Author: Kent
Date: 2024-12-03
Added a new option "qualify_2xx_only" to the res_pjsip AOR qualify
feature to mark a contact as available only if an OPTIONS request
returns a 2XX response. If the option is not specified or is false,
any response to the OPTIONS request marks the contact as available.
UserNote: The pjsip.conf AOR section now has a "qualify_2xx_only"
option that can be set so that only 2XX responses to OPTIONS requests
used to qualify a contact will mark the contact as available.
#### res_odbc: release threads from potential starvation.
Author: Jaco Kroon
Date: 2024-12-10
Whenever a slot is freed up due to a failed connection, wake up a waiter
before failing.
In the case of a dead connection there could be waiters, for example,
let's say two threads tries to acquire objects at the same time, with
one in the cached connections, one will acquire the dead connection, and
the other will enter into the wait state. The thread with the dead
connection will clear up the dead connection, and then attempt a
re-acquire (at this point there cannot be cached connections else the
other thread would have received that and tried to clean up), as such,
at this point we're guaranteed that either there are no waiting threads,
or that the maxconnections - connection_cnt threads will attempt to
re-acquire connections, and then either succeed, using those
connections, or failing, and then signalling to release more waiters.
Also fix the pointer log for ODBC handle %p dead which would always
reflect NULL.
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
#### app_queue: indicate the paused state of a dynamically added member in queue_log.
Author: Sperl Viktor
Date: 2024-12-05
Fixes: #1021
#### Allow C++ source files (as extension .cc) in the main directory
Author: George Joseph
Date: 2024-12-09
Although C++ files (as extension .cc) have been handled in the module
directories for many years, the main directory was missing one line in its
Makefile that prevented C++ files from being recognised there.
#### format_gsm.c: Added mime type
Author: Alexey Khabulyak
Date: 2024-12-03
Sometimes it's impossible to get a file extension from URL
(eg. http://example.com/gsm/your) so we have to rely on content-type header.
Currenly, asterisk does not support content-type for gsm format(unlike wav).
Added audio/gsm according to https://www.rfc-editor.org/rfc/rfc4856.html
#### func_uuid: Add a new dialplan function to generate UUIDs
Author: Maksim Nesterov
Date: 2024-12-01
This function is useful for uniquely identifying calls, recordings, and other entities in distributed environments, as well as for generating an argument for the AudioSocket application.
#### app_queue: allow dynamically adding a queue member in paused state.
Author: Sperl Viktor
Date: 2024-11-27
Fixes: #1007
UserNote: use the p option of AddQueueMember() for paused member state.
Optionally, use the r(reason) option to specify a custom reason for the pause.
#### chan_iax2: Add log message for rejected calls.
Author: Naveen Albert
Date: 2023-11-06
Add a log message for a path that currently silently drops IAX2
frames without indicating that anything is wrong.
#### chan_pjsip: Send VIDUPDATE RTP frame for all H.264 streams
Author: Maximilian Fridrich
Date: 2024-12-02
Currently, when a chan_pjsip channel receives a VIDUPDATE indication,
an RTP VIDUPDATE frame is only queued on a H.264 stream if WebRTC is
enabled on that endpoint. This restriction does not really make sense.
Now, a VIDUPDATE RTP frame is written even if WebRTC is not enabled (as
is the case with VP8, VP9, and H.265 streams).
Resolves: #1013
#### audiohook.c: resolving the issue with audiohook both reading when packet loss ..
Author: Tinet-mucw
Date: 2024-08-22
When there is 0% packet loss on one side of the call and 15% packet loss on the other side, reading frame is often failed when reading direction_both audiohook. when read_factory available = 0, write_factory available = 320; i think write factory is usable read; because after reading one frame, there is still another frame that can be read together with the next read factory frame.
Resolves: #851
#### res_curl.conf.sample: clean up sample configuration and add new SSL options
Author: Mike Pultz
Date: 2024-11-21
This update properly documents all the current configuration options supported
by the curl implementation, including the new ssl_* options.
#### res_rtp_asterisk.c: Set Mark on rtp when timestamp skew is too big
Author: Viktor Litvinov
Date: 2024-10-02
Set Mark bit in rtp stream when timestamp skew is bigger than MAX_TIMESTAMP_SKEW.
Fixes: #927
#### res_rtp_asterisk.c: Fix bridged_payload matching with sample rate for DTMF
Author: Alexey Vasilyev
Date: 2024-11-25
Fixes #1004
#### manager.c: Add Processed Call Count to CoreStatus output
Author: Mike Pultz
Date: 2024-11-21
This update adds the processed call count to the CoreStatus AMI Action responsie. This output is
similar to the values returned by "core show channels" or "core show calls" in the CLI.
UserNote: The current processed call count is now returned as CoreProcessedCalls from the
CoreStatus AMI Action.
#### func_curl.c: Add additional CURL options for SSL requests
Author: Mike Pultz
Date: 2024-11-09
This patch adds additional CURL TLS options / options to support mTLS authenticated requests:
* ssl_verifyhost - perform a host verification on the peer certificate (CURLOPT_SSL_VERIFYHOST)
* ssl_cainfo - define a CA certificate file (CURLOPT_CAINFO)
* ssl_capath - define a CA certificate directory (CURLOPT_CAPATH)
* ssl_cert - define a client certificate for the request (CURLOPT_SSLCERT)
* ssl_certtype - specify the client certificate type (CURLOPT_SSLCERTTYPE)
* ssl_key - define a client private key for the request (CURLOPT_SSLKEY)
* ssl_keytype - specify the client private key type (CURLOPT_SSLKEYTYPE)
* ssl_keypasswd - set a password for the private key, if required (CURLOPT_KEYPASSWD)
UserNote: The following new configuration options are now available
in the res_curl.conf file, and the CURL() function: 'ssl_verifyhost'
(CURLOPT_SSL_VERIFYHOST), 'ssl_cainfo' (CURLOPT_CAINFO), 'ssl_capath'
(CURLOPT_CAPATH), 'ssl_cert' (CURLOPT_SSLCERT), 'ssl_certtype'
(CURLOPT_SSLCERTTYPE), 'ssl_key' (CURLOPT_SSLKEY), 'ssl_keytype',
(CURLOPT_SSLKEYTYPE) and 'ssl_keypasswd' (CURLOPT_KEYPASSWD). See the
libcurl documentation for more details.
#### sig_analog: Fix regression with FGD and E911 signaling.
Author: Naveen Albert
Date: 2024-11-14
Commit 466eb4a52b69e6dead7ebba13a83f14ef8a559c1 introduced a regression
which completely broke Feature Group D and E911 signaling, by removing
the call to analog_my_getsigstr, which affected multiple switch cases.
Restore the original behavior for all protocols except Feature Group C
CAMA (MF), which is all that patch was attempting to target.
Resolves: #993
#### main/stasis_channels.c: Fix crash when setting a global variable with invalid ..
Author: James Terhune
Date: 2024-11-18
Add check for null value of chan before referencing it with ast_channel_name()
Resolves: #999
#### res_stir_shaken: Allow sending Identity headers for unknown TNs
Author: George Joseph
Date: 2024-11-08
Added a new option "unknown_tn_attest_level" to allow Identity
headers to be sent when a callerid TN isn't explicitly configured
in stir_shaken.conf. Since there's no TN object, a private_key_file
and public_cert_url must be configured in the attestation or profile
objects.
Since "unknown_tn_attest_level" uses the same enum as attest_level,
some of the sorcery macros had to be refactored to allow sharing
the enum and to/from string conversion functions.
Also fixed a memory leak in crypto_utils:pem_file_cb().
Resolves: #921
UserNote: You can now set the "unknown_tn_attest_level" option
in the attestation and/or profile objects in stir_shaken.conf to
enable sending Identity headers for callerid TNs not explicitly
configured.