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.
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.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.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.geoloc show gml_shape_defs CLI command has been updated to show which
coordinate reference systems are valid for each shape.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.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})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.
Author: George Joseph Date: 2025-12-17
<gml:pos>
element resulting in invalid XML.id attribute on the enclosing tuple, device
and person elements.deviceID element.crs location_info parameter, although documented, didn't work.pos3d location_info parameter appears in some documentation but
wasn't being parsed correctly.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})
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
Author: Sean Bright Date: 2025-10-22
== with the POSIX sh test utility is UB.$(find … | sort).Resolves: #1554
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
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
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