From 4f31258df77cd9435e014bb526c762a2a036827a Mon Sep 17 00:00:00 2001 From: Asterisk Development Team Date: Mon, 12 Jan 2026 16:33:18 +0000 Subject: [PATCH] Update for certified-20.7-cert8 --- .version | 2 +- CHANGES.html | 2 +- CHANGES.md | 2 +- .../ChangeLog-certified-20.7-cert8.html | 231 ++++++++++++++++ ChangeLogs/ChangeLog-certified-20.7-cert8.md | 256 ++++++++++++++++++ README.html | 4 +- README.md | 2 +- 7 files changed, 493 insertions(+), 6 deletions(-) create mode 100644 ChangeLogs/ChangeLog-certified-20.7-cert8.html create mode 100644 ChangeLogs/ChangeLog-certified-20.7-cert8.md diff --git a/.version b/.version index baa91ff640..7bc8930cc8 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -certified-20.7-cert7 +certified-20.7-cert8 diff --git a/CHANGES.html b/CHANGES.html index 9aef6ba99a..9260e8ad91 120000 --- a/CHANGES.html +++ b/CHANGES.html @@ -1 +1 @@ -ChangeLogs/ChangeLog-certified-20.7-cert7.html \ No newline at end of file +ChangeLogs/ChangeLog-certified-20.7-cert8.html \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md index eb4f4cc9a3..6c6098f9c5 120000 --- a/CHANGES.md +++ b/CHANGES.md @@ -1 +1 @@ -ChangeLogs/ChangeLog-certified-20.7-cert7.md \ No newline at end of file +ChangeLogs/ChangeLog-certified-20.7-cert8.md \ No newline at end of file diff --git a/ChangeLogs/ChangeLog-certified-20.7-cert8.html b/ChangeLogs/ChangeLog-certified-20.7-cert8.html new file mode 100644 index 0000000000..58e834837e --- /dev/null +++ b/ChangeLogs/ChangeLog-certified-20.7-cert8.html @@ -0,0 +1,231 @@ +ChangeLog for asterisk-certified-20.7-cert8 +

Change Log for Release asterisk-certified-20.7-cert8

+

Links:

+ +

Summary:

+ +

User Notes:

+ +

Upgrade Notes:

+ +

Developer Notes:

+

Commit Authors:

+ +

Issue and Commit Detail:

+

Closed Issues:

+ +

Commits By Author:

+ +

Commit List:

+ +

Commit Details:

+

res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command

+

Author: Mike Bradeen + Date: 2026-01-06

+

Reduce cache lock time for AMI and CLI sorcery memory cache populate + commands by adding a new populate_lock to the sorcery_memory_cache + struct which is locked separately from the existing cache lock so that + the cache lock can be maintained for a reduced time, locking only when + the cache objects are removed and re-populated.

+

Resolves: #1700

+

UserNote: The AMI command sorcery memory cache populate will now + return an error if there is an internal error performing the populate. + The CLI command will display an error in this case as well.

+

res_geolocation: Fix multiple issues with XML generation.

+

Author: George Joseph + Date: 2025-12-17

+ +

In addition to fixing the above, several other code refactorings were + performed and the unit test enhanced to include a round trip + XML -> eprofile -> XML validation.

+

Resolves: #1667

+

UserNote: Geolocation: Two new optional profile parameters have been added. + * pidf_element_id which sets the value of the id attribute on the top-level + PIDF-LO device, person or tuple elements. + * device_id which sets the content of the <deviceID> element. + Both parameters can include channel variables.

+

UpgradeNote: Geolocation: In order to correct bugs in both code and + documentation, the following changes to the parameters for GML geolocation + locations are now in effect: + * The documented but unimplemented crs (coordinate reference system) element + has been added to the location_info parameter that indicates whether the 2d + or 3d reference system is to be used. If the crs isn't valid for the shape + specified, an error will be generated. The default depends on the shape + specified. + * The Circle, Ellipse and ArcBand shapes MUST use a 2d crs. If crs isn't + specified, it will default to 2d for these shapes. + The Sphere, Ellipsoid and Prism shapes MUST use a 3d crs. If crs isn't + specified, it will default to 3d for these shapes. + The Point and Polygon shapes may use either crs. The default crs is 2d + however so if 3d positions are used, the crs must be explicitly set to 3d. + * The geoloc show gml_shape_defs CLI command has been updated to show which + coordinate reference systems are valid for each shape. + * The pos3d element has been removed in favor of allowing the pos element + to include altitude if the crs is 3d. The number of values in the pos + element MUST be 2 if the crs is 2d and 3 if the crs is 3d. An error + will be generated for any other combination. + * The angle unit-of-measure for shapes that use angles should now be included + in the respective parameter. The default is degrees. There were some + inconsistent references to orientation_uom in some documentation but that + parameter never worked and is now removed. See examples below. + Examples... + location_info = shape="Sphere", pos="39.0 -105.0 1620", radius="20" + location_info = shape="Point", crs="3d", pos="39.0 -105.0 1620" + location_info = shape="Point", pos="39.0 -105.0" + location_info = shape=Ellipsoid, pos="39.0 -105.0 1620", semiMajorAxis="20" + semiMinorAxis="10", verticalAxis="0", orientation="25 degrees" + pidf_element_id = ${CHANNEL(name)}-${EXTEN} + device_id = mac:001122334455 + Set(GEOLOC_PROFILE(pidf_element_id)=${CHANNEL(name)}/${EXTEN})

+

stasis/control.c: Add destructor to timeout_datastore.

+

Author: George Joseph + Date: 2025-12-31

+

The timeout_datastore was missing a destructor resulting in a leak + of 16 bytes for every outgoing ARI call.

+

Resolves: #1681

+

safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.

+

Author: Sean Bright + Date: 2025-10-22

+ +

Resolves: #1554

+

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

+

res_pjsip_diversion: resolve race condition between Diversion header processing and redirect

+

Author: Mike Bradeen + Date: 2025-08-07

+

Based on the firing order of the PJSIP call-backs on a redirect, it was possible for + the Diversion header to not be included in the outgoing 181 response to the UAC and + the INVITE to the UAS.

+

This change moves the Diversion header processing to an earlier PJSIP callback while also + preventing the corresponding update that can cause a duplicate 181 response when processing + the header at that time.

+

Resolves: #1349

+

cdr.c: Set tenantid from party_a->base instead of chan->base.

+

Author: George Joseph + Date: 2025-07-17

+

The CDR tenantid was being set in cdr_object_alloc from the channel->base + snapshot. Since this happens at channel creation before the dialplan is even + reached, calls to CHANNEL(tenantid)=<something> in the dialplan were being + ignored. Instead we now take tenantid from party_a when + cdr_object_create_public_records() is called which is after the call has + ended and all channel snapshots rebuilt. This is exactly how accountcode + and amaflags, which can also be set in tha dialplpan, are handled.

+

Resolves: #1259

+ diff --git a/ChangeLogs/ChangeLog-certified-20.7-cert8.md b/ChangeLogs/ChangeLog-certified-20.7-cert8.md new file mode 100644 index 0000000000..fc12e1a3df --- /dev/null +++ b/ChangeLogs/ChangeLog-certified-20.7-cert8.md @@ -0,0 +1,256 @@ + +## Change Log for Release asterisk-certified-20.7-cert8 + +### Links: + + - [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-20.7-cert8.html) + - [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-20.7-cert7...certified-20.7-cert8) + - [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-20.7-cert8.tar.gz) + - [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk) + +### Summary: + +- Commits: 7 +- Commit Authors: 3 +- Issues Resolved: 7 +- Security Advisories Resolved: 0 + +### User Notes: + +- #### res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command + The AMI command sorcery memory cache populate will now + return an error if there is an internal error performing the populate. + The CLI command will display an error in this case as well. + +- #### res_geolocation: Fix multiple issues with XML generation. + Geolocation: Two new optional profile parameters have been added. + * `pidf_element_id` which sets the value of the `id` attribute on the top-level + PIDF-LO `device`, `person` or `tuple` elements. + * `device_id` which sets the content of the `` element. + Both parameters can include channel variables. + + +### Upgrade Notes: + +- #### res_geolocation: Fix multiple issues with XML generation. + Geolocation: In order to correct bugs in both code and + documentation, the following changes to the parameters for GML geolocation + locations are now in effect: + * The documented but unimplemented `crs` (coordinate reference system) element + has been added to the location_info parameter that indicates whether the `2d` + or `3d` reference system is to be used. If the crs isn't valid for the shape + specified, an error will be generated. The default depends on the shape + specified. + * The Circle, Ellipse and ArcBand shapes MUST use a `2d` crs. If crs isn't + specified, it will default to `2d` for these shapes. + The Sphere, Ellipsoid and Prism shapes MUST use a `3d` crs. If crs isn't + specified, it will default to `3d` for these shapes. + The Point and Polygon shapes may use either crs. The default crs is `2d` + however so if `3d` positions are used, the crs must be explicitly set to `3d`. + * The `geoloc show gml_shape_defs` CLI command has been updated to show which + coordinate reference systems are valid for each shape. + * The `pos3d` element has been removed in favor of allowing the `pos` element + to include altitude if the crs is `3d`. The number of values in the `pos` + element MUST be 2 if the crs is `2d` and 3 if the crs is `3d`. An error + will be generated for any other combination. + * The angle unit-of-measure for shapes that use angles should now be included + in the respective parameter. The default is `degrees`. There were some + inconsistent references to `orientation_uom` in some documentation but that + parameter never worked and is now removed. See examples below. + Examples... + ``` + location_info = shape="Sphere", pos="39.0 -105.0 1620", radius="20" + location_info = shape="Point", crs="3d", pos="39.0 -105.0 1620" + location_info = shape="Point", pos="39.0 -105.0" + location_info = shape=Ellipsoid, pos="39.0 -105.0 1620", semiMajorAxis="20" + semiMinorAxis="10", verticalAxis="0", orientation="25 degrees" + pidf_element_id = ${CHANNEL(name)}-${EXTEN} + device_id = mac:001122334455 + Set(GEOLOC_PROFILE(pidf_element_id)=${CHANNEL(name)}/${EXTEN}) + ``` + + +### Developer Notes: + + +### Commit Authors: + +- George Joseph: (4) +- Mike Bradeen: (2) +- Sean Bright: (1) + +## Issue and Commit Detail: + +### Closed Issues: + + - 1259: [bug]: New TenantID feature doesn't seem to set CDR for incoming calls + - 1349: [bug]: Race condition on redirect can cause missing Diversion header + - 1539: [bug]: safe_asterisk without TTY doesn't log to file + - 1554: [bug]: safe_asterisk recurses into subdirectories of startup.d after f97361 + - 1667: [bug]: Multiple geolocation issues with rendering XML + - 1681: [bug]: stasis/control.c: Memory leak of hangup_time in set-timeout + - 1700: [improvement]: Improve sorcery cache populate + +### Commits By Author: + +- #### George Joseph (4): + +- #### Mike Bradeen (2): + +- #### Sean Bright (1): + +### Commit List: + +- res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command +- res_geolocation: Fix multiple issues with XML generation. +- stasis/control.c: Add destructor to timeout_datastore. +- safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior. +- safe_asterisk: Fix logging and sorting issue. +- res_pjsip_diversion: resolve race condition between Diversion header processing and redirect +- cdr.c: Set tenantid from party_a->base instead of chan->base. + +### Commit Details: + +#### res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command + Author: Mike Bradeen + Date: 2026-01-06 + + Reduce cache lock time for AMI and CLI sorcery memory cache populate + commands by adding a new populate_lock to the sorcery_memory_cache + struct which is locked separately from the existing cache lock so that + the cache lock can be maintained for a reduced time, locking only when + the cache objects are removed and re-populated. + + Resolves: #1700 + + UserNote: The AMI command sorcery memory cache populate will now + return an error if there is an internal error performing the populate. + The CLI command will display an error in this case as well. + +#### res_geolocation: Fix multiple issues with XML generation. + Author: George Joseph + Date: 2025-12-17 + + * 3d positions were being rendered without an enclosing `` + element resulting in invalid XML. + * There was no way to set the `id` attribute on the enclosing `tuple`, `device` + and `person` elements. + * There was no way to set the value of the `deviceID` element. + * Parsing of degree and radian UOMs was broken resulting in them appearing + outside an XML element. + * The UOM schemas for degrees and radians were reversed. + * The Ellipsoid shape was missing and the Ellipse shape was defined multiple + times. + * The `crs` location_info parameter, although documented, didn't work. + * The `pos3d` location_info parameter appears in some documentation but + wasn't being parsed correctly. + * The retransmission-allowed and retention-expiry sub-elements of usage-rules + were using the `gp` namespace instead of the `gbp` namespace. + + In addition to fixing the above, several other code refactorings were + performed and the unit test enhanced to include a round trip + XML -> eprofile -> XML validation. + + Resolves: #1667 + + UserNote: Geolocation: Two new optional profile parameters have been added. + * `pidf_element_id` which sets the value of the `id` attribute on the top-level + PIDF-LO `device`, `person` or `tuple` elements. + * `device_id` which sets the content of the `` element. + Both parameters can include channel variables. + + UpgradeNote: Geolocation: In order to correct bugs in both code and + documentation, the following changes to the parameters for GML geolocation + locations are now in effect: + * The documented but unimplemented `crs` (coordinate reference system) element + has been added to the location_info parameter that indicates whether the `2d` + or `3d` reference system is to be used. If the crs isn't valid for the shape + specified, an error will be generated. The default depends on the shape + specified. + * The Circle, Ellipse and ArcBand shapes MUST use a `2d` crs. If crs isn't + specified, it will default to `2d` for these shapes. + The Sphere, Ellipsoid and Prism shapes MUST use a `3d` crs. If crs isn't + specified, it will default to `3d` for these shapes. + The Point and Polygon shapes may use either crs. The default crs is `2d` + however so if `3d` positions are used, the crs must be explicitly set to `3d`. + * The `geoloc show gml_shape_defs` CLI command has been updated to show which + coordinate reference systems are valid for each shape. + * The `pos3d` element has been removed in favor of allowing the `pos` element + to include altitude if the crs is `3d`. The number of values in the `pos` + element MUST be 2 if the crs is `2d` and 3 if the crs is `3d`. An error + will be generated for any other combination. + * The angle unit-of-measure for shapes that use angles should now be included + in the respective parameter. The default is `degrees`. There were some + inconsistent references to `orientation_uom` in some documentation but that + parameter never worked and is now removed. See examples below. + Examples... + ``` + location_info = shape="Sphere", pos="39.0 -105.0 1620", radius="20" + location_info = shape="Point", crs="3d", pos="39.0 -105.0 1620" + location_info = shape="Point", pos="39.0 -105.0" + location_info = shape=Ellipsoid, pos="39.0 -105.0 1620", semiMajorAxis="20" + semiMinorAxis="10", verticalAxis="0", orientation="25 degrees" + pidf_element_id = ${CHANNEL(name)}-${EXTEN} + device_id = mac:001122334455 + Set(GEOLOC_PROFILE(pidf_element_id)=${CHANNEL(name)}/${EXTEN}) + ``` + +#### stasis/control.c: Add destructor to timeout_datastore. + Author: George Joseph + Date: 2025-12-31 + + The timeout_datastore was missing a destructor resulting in a leak + of 16 bytes for every outgoing ARI call. + + Resolves: #1681 + +#### 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 + +#### 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 + +#### res_pjsip_diversion: resolve race condition between Diversion header processing and redirect + Author: Mike Bradeen + Date: 2025-08-07 + + Based on the firing order of the PJSIP call-backs on a redirect, it was possible for + the Diversion header to not be included in the outgoing 181 response to the UAC and + the INVITE to the UAS. + + This change moves the Diversion header processing to an earlier PJSIP callback while also + preventing the corresponding update that can cause a duplicate 181 response when processing + the header at that time. + + Resolves: #1349 + +#### cdr.c: Set tenantid from party_a->base instead of chan->base. + Author: George Joseph + Date: 2025-07-17 + + The CDR tenantid was being set in cdr_object_alloc from the channel->base + snapshot. Since this happens at channel creation before the dialplan is even + reached, calls to `CHANNEL(tenantid)=` in the dialplan were being + ignored. Instead we now take tenantid from party_a when + cdr_object_create_public_records() is called which is after the call has + ended and all channel snapshots rebuilt. This is exactly how accountcode + and amaflags, which can also be set in tha dialplpan, are handled. + + Resolves: #1259 + diff --git a/README.html b/README.html index c7d5c15266..bc452b58fd 100644 --- a/README.html +++ b/README.html @@ -1,4 +1,4 @@ -Readme for asterisk-certified-20.7-cert7 +Readme for asterisk-certified-20.7-cert8

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.

If you are updating from a previous version of Asterisk, make sure you read the Change Logs.

-

Change Logs

+

Change Logs

NEW INSTALLATIONS

diff --git a/README.md b/README.md index 5c39c1009e..add0b31994 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ If you are updating from a previous version of Asterisk, make sure you read the Change Logs. -[Change Logs](ChangeLogs/ChangeLog-certified-20.7-cert7.html) +[Change Logs](ChangeLogs/ChangeLog-certified-20.7-cert8.html) ### NEW INSTALLATIONS -- 2.47.3