-certified-20.7-cert7
+certified-20.7-cert8
-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
-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
--- /dev/null
+<html><head><title>ChangeLog for asterisk-certified-20.7-cert8</title></head><body>
+<h2>Change Log for Release asterisk-certified-20.7-cert8</h2>
+<h3>Links:</h3>
+<ul>
+<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-20.7-cert8.html">Full ChangeLog</a> </li>
+<li><a href="https://github.com/asterisk/asterisk/compare/certified-20.7-cert7...certified-20.7-cert8">GitHub Diff</a> </li>
+<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-20.7-cert8.tar.gz">Tarball</a> </li>
+<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk">Downloads</a> </li>
+</ul>
+<h3>Summary:</h3>
+<ul>
+<li>Commits: 7</li>
+<li>Commit Authors: 3</li>
+<li>Issues Resolved: 7</li>
+<li>Security Advisories Resolved: 0</li>
+</ul>
+<h3>User Notes:</h3>
+<ul>
+<li>
+<h4>res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command</h4>
+<p>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.</p>
+</li>
+<li>
+<h4>res_geolocation: Fix multiple issues with XML generation.</h4>
+<p>Geolocation: Two new optional profile parameters have been added.</p>
+</li>
+<li><code>pidf_element_id</code> which sets the value of the <code>id</code> attribute on the top-level
+ PIDF-LO <code>device</code>, <code>person</code> or <code>tuple</code> elements.</li>
+<li><code>device_id</code> which sets the content of the <code><deviceID></code> element.
+ Both parameters can include channel variables.</li>
+</ul>
+<h3>Upgrade Notes:</h3>
+<ul>
+<li>
+<h4>res_geolocation: Fix multiple issues with XML generation.</h4>
+ 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:</li>
+<li>The documented but unimplemented <code>crs</code> (coordinate reference system) element
+ has been added to the location_info parameter that indicates whether the <code>2d</code>
+ or <code>3d</code> 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.</li>
+<li>The Circle, Ellipse and ArcBand shapes MUST use a <code>2d</code> crs. If crs isn't
+ specified, it will default to <code>2d</code> for these shapes.
+ The Sphere, Ellipsoid and Prism shapes MUST use a <code>3d</code> crs. If crs isn't
+ specified, it will default to <code>3d</code> for these shapes.
+ The Point and Polygon shapes may use either crs. The default crs is <code>2d</code>
+ however so if <code>3d</code> positions are used, the crs must be explicitly set to <code>3d</code>.</li>
+<li>The <code>geoloc show gml_shape_defs</code> CLI command has been updated to show which
+ coordinate reference systems are valid for each shape.</li>
+<li>The <code>pos3d</code> element has been removed in favor of allowing the <code>pos</code> element
+ to include altitude if the crs is <code>3d</code>. The number of values in the <code>pos</code>
+ element MUST be 2 if the crs is <code>2d</code> and 3 if the crs is <code>3d</code>. An error
+ will be generated for any other combination.</li>
+<li>The angle unit-of-measure for shapes that use angles should now be included
+ in the respective parameter. The default is <code>degrees</code>. There were some
+ inconsistent references to <code>orientation_uom</code> in some documentation but that
+ parameter never worked and is now removed. See examples below.
+ Examples...
+ <code>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})</code></li>
+</ul>
+<h3>Developer Notes:</h3>
+<h3>Commit Authors:</h3>
+<ul>
+<li>George Joseph: (4)</li>
+<li>Mike Bradeen: (2)</li>
+<li>Sean Bright: (1)</li>
+</ul>
+<h2>Issue and Commit Detail:</h2>
+<h3>Closed Issues:</h3>
+<ul>
+<li>1259: [bug]: New TenantID feature doesn't seem to set CDR for incoming calls</li>
+<li>1349: [bug]: Race condition on redirect can cause missing Diversion header</li>
+<li>1539: [bug]: safe_asterisk without TTY doesn't log to file</li>
+<li>1554: [bug]: safe_asterisk recurses into subdirectories of startup.d after f97361</li>
+<li>1667: [bug]: Multiple geolocation issues with rendering XML</li>
+<li>1681: [bug]: stasis/control.c: Memory leak of hangup_time in set-timeout</li>
+<li>1700: [improvement]: Improve sorcery cache populate</li>
+</ul>
+<h3>Commits By Author:</h3>
+<ul>
+<li>
+<h4>George Joseph (4):</h4>
+</li>
+<li>
+<h4>Mike Bradeen (2):</h4>
+</li>
+<li>
+<h4>Sean Bright (1):</h4>
+</li>
+</ul>
+<h3>Commit List:</h3>
+<ul>
+<li>res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command</li>
+<li>res_geolocation: Fix multiple issues with XML generation.</li>
+<li>stasis/control.c: Add destructor to timeout_datastore.</li>
+<li>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</li>
+<li>safe_asterisk: Fix logging and sorting issue.</li>
+<li>res_pjsip_diversion: resolve race condition between Diversion header processing and redirect</li>
+<li>cdr.c: Set tenantid from party_a->base instead of chan->base.</li>
+</ul>
+<h3>Commit Details:</h3>
+<h4>res_sorcery_memory_cache: Reduce cache lock time for sorcery memory cache populate command</h4>
+<p>Author: Mike Bradeen
+ Date: 2026-01-06</p>
+<p>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.</p>
+<p>Resolves: #1700</p>
+<p>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.</p>
+<h4>res_geolocation: Fix multiple issues with XML generation.</h4>
+<p>Author: George Joseph
+ Date: 2025-12-17</p>
+<ul>
+<li>3d positions were being rendered without an enclosing <code><gml:pos></code>
+ element resulting in invalid XML.</li>
+<li>There was no way to set the <code>id</code> attribute on the enclosing <code>tuple</code>, <code>device</code>
+ and <code>person</code> elements.</li>
+<li>There was no way to set the value of the <code>deviceID</code> element.</li>
+<li>Parsing of degree and radian UOMs was broken resulting in them appearing
+ outside an XML element.</li>
+<li>The UOM schemas for degrees and radians were reversed.</li>
+<li>The Ellipsoid shape was missing and the Ellipse shape was defined multiple
+ times.</li>
+<li>The <code>crs</code> location_info parameter, although documented, didn't work.</li>
+<li>The <code>pos3d</code> location_info parameter appears in some documentation but
+ wasn't being parsed correctly.</li>
+<li>The retransmission-allowed and retention-expiry sub-elements of usage-rules
+ were using the <code>gp</code> namespace instead of the <code>gbp</code> namespace.</li>
+</ul>
+<p>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.</p>
+<p>Resolves: #1667</p>
+<p>UserNote: Geolocation: Two new optional profile parameters have been added.
+ * <code>pidf_element_id</code> which sets the value of the <code>id</code> attribute on the top-level
+ PIDF-LO <code>device</code>, <code>person</code> or <code>tuple</code> elements.
+ * <code>device_id</code> which sets the content of the <code><deviceID></code> element.
+ Both parameters can include channel variables.</p>
+<p>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 <code>crs</code> (coordinate reference system) element
+ has been added to the location_info parameter that indicates whether the <code>2d</code>
+ or <code>3d</code> 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 <code>2d</code> crs. If crs isn't
+ specified, it will default to <code>2d</code> for these shapes.
+ The Sphere, Ellipsoid and Prism shapes MUST use a <code>3d</code> crs. If crs isn't
+ specified, it will default to <code>3d</code> for these shapes.
+ The Point and Polygon shapes may use either crs. The default crs is <code>2d</code>
+ however so if <code>3d</code> positions are used, the crs must be explicitly set to <code>3d</code>.
+ * The <code>geoloc show gml_shape_defs</code> CLI command has been updated to show which
+ coordinate reference systems are valid for each shape.
+ * The <code>pos3d</code> element has been removed in favor of allowing the <code>pos</code> element
+ to include altitude if the crs is <code>3d</code>. The number of values in the <code>pos</code>
+ element MUST be 2 if the crs is <code>2d</code> and 3 if the crs is <code>3d</code>. 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 <code>degrees</code>. There were some
+ inconsistent references to <code>orientation_uom</code> in some documentation but that
+ parameter never worked and is now removed. See examples below.
+ Examples...
+ <code>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})</code></p>
+<h4>stasis/control.c: Add destructor to timeout_datastore.</h4>
+<p>Author: George Joseph
+ Date: 2025-12-31</p>
+<p>The timeout_datastore was missing a destructor resulting in a leak
+ of 16 bytes for every outgoing ARI call.</p>
+<p>Resolves: #1681</p>
+<h4>safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.</h4>
+<p>Author: Sean Bright
+ Date: 2025-10-22</p>
+<ul>
+<li>Using <code>==</code> with the POSIX sh <code>test</code> utility is UB.</li>
+<li>Switch back to using globs instead of using <code>$(find … | sort)</code>.</li>
+<li>Fix a missing redirect when checking for the OS type.</li>
+</ul>
+<p>Resolves: #1554</p>
+<h4>safe_asterisk: Fix logging and sorting issue.</h4>
+<p>Author: George Joseph
+ Date: 2025-10-17</p>
+<p>Re-enabled "TTY=9" which was erroneously disabled as part of a recent
+ security fix and removed another logging "fix" that was added.</p>
+<p>Also added a sort to the "find" that enumerates the scripts to be sourced so
+ they're sourced in the correct order.</p>
+<p>Resolves: #1539</p>
+<h4>res_pjsip_diversion: resolve race condition between Diversion header processing and redirect</h4>
+<p>Author: Mike Bradeen
+ Date: 2025-08-07</p>
+<p>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.</p>
+<p>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.</p>
+<p>Resolves: #1349</p>
+<h4>cdr.c: Set tenantid from party_a->base instead of chan->base.</h4>
+<p>Author: George Joseph
+ Date: 2025-07-17</p>
+<p>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 <code>CHANNEL(tenantid)=<something></code> 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.</p>
+<p>Resolves: #1259</p>
+</body></html>
--- /dev/null
+
+## 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 `<deviceID>` 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 `<gml:pos>`
+ 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 `<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
+
+ * 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)=<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
+
-<html><head><title>Readme for asterisk-certified-20.7-cert7</title></head><body>
+<html><head><title>Readme for asterisk-certified-20.7-cert8</title></head><body>
<h1>The Asterisk(R) Open Source PBX</h1>
<pre><code>By Mark Spencer <markster@digium.com> and the Asterisk.org developer community.
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
<p>If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.</p>
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
-<p><a href="ChangeLogs/ChangeLog-certified-20.7-cert7.html">Change Logs</a></p>
+<p><a href="ChangeLogs/ChangeLog-certified-20.7-cert8.html">Change Logs</a></p>
<!-- END-CHANGELOGS -->
<h3>NEW INSTALLATIONS</h3>
read the Change Logs.
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
-[Change Logs](ChangeLogs/ChangeLog-certified-20.7-cert7.html)
+[Change Logs](ChangeLogs/ChangeLog-certified-20.7-cert8.html)
<!-- END-CHANGELOGS -->
### NEW INSTALLATIONS