Compare commits

..

192 Commits

Author SHA1 Message Date
Sean Bright
cf6d5fb618 safe_asterisk: Resolve a POSIX sh problem and restore globbing behavior.
* 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
2025-10-28 15:50:07 +00:00
George Joseph
b81fdd3a64 safe_asterisk: Fix logging and sorting issue.
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
2025-10-22 16:27:22 +00:00
George Joseph
0278f5bde1 pjproject: Update bundled to 2.15.1.
This resolves a security issue where RTP ports weren't being released
causing possible resource exhaustion issues.

Resolves: #GHSA-557q-795j-wfx2
2025-08-28 13:48:08 +00:00
George Joseph
6158cc7b8e .github: Update Releaser to use SES email 2025-08-20 12:05:11 -06:00
Mike Bradeen
cc68c53af1 res_pjsip_diversion: resolve race condition between Diversion header processing and redirect
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
2025-08-11 13:58:01 +00:00
ThatTotallyRealMyth
bca984ab5f safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
UpgradeNote: The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root.  If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started.  Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.

Resolves: #GHSA-v9q8-9j8m-5xwp
2025-07-31 14:06:22 +00:00
George Joseph
1855f2a1c0 cdr.c: Set tenantid from party_a->base instead of chan->base.
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
2025-07-22 12:55:16 +00:00
George Joseph
0109e574be .github: Reduce number of inputs to Releaser to 10.
The max number of inputs supported by GitHub is 10 so
is_security and is_hotfix were factored into a single choice
entry.
2025-07-18 11:29:31 -06:00
George Joseph
1510abcf44 .github: Add skip-cherry-pick and skip-test-builds to Releaser. 2025-07-18 11:07:39 -06:00
George Joseph
3b8012d1d8 asterisk.c: Add option to restrict shell access from remote consoles.
UserNote: A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.

Resolves: #GHSA-c7p6-7mvq-8jq2
2025-05-22 14:57:29 +00:00
George Joseph
c523539d59 res_pjsip_messaging.c: Mask control characters in received From display name
Incoming SIP MESSAGEs will now have their From header's display name
sanitized by replacing any characters < 32 (space) with a space.

Resolves: #GHSA-2grh-7mhv-fcfw
2025-05-22 14:24:26 +00:00
George Joseph
e1a205074b res_pjsip: Backport pjsip uri utilities.
The following utilities have been backported:

ast_sip_is_uri_sip_sips
ast_sip_is_allowed_uri
ast_sip_pjsip_uri_get_username
ast_sip_pjsip_uri_get_hostname
ast_sip_pjsip_uri_get_other_param

They were originally included in the commit for supporting TEL uris.
Support for TEL uris is NOT included here however.
2025-03-25 16:26:49 -06:00
George Joseph
fb966116fa build_tools: Backport from 18
There are several build fixes that never made it into certified/18.9.
Unfortunately the commits that contained the fixes also contained other
stuff that won't cherry-pick into cert so the build files had to be
just copied from 18.
2025-03-25 16:08:49 -06:00
Sean Bright
47c498bc72 chan_sip.c: Fix __sip_reliable_xmit build error
Fixes #954
2025-03-25 16:05:48 -06:00
Sean Bright
0b0f284684 chan_dahdi.c: Resolve a format-truncation build warning.
With gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0:

> chan_dahdi.c:4129:18: error: ‘%s’ directive output may be truncated
>   writing up to 255 bytes into a region of size between 242 and 252
>   [-Werror=format-truncation=]

This removes the error-prone sizeof(...) calculations in favor of just
doubling the size of the base buffer.

Change-Id: I2d276785286730d3d5d0a921bcea2e065dbf27c5
2025-03-25 15:39:38 -06:00
Sean Bright
ed12e22ad9 xml.c: Update deprecated libxml2 API usage.
Two functions are deprecated as of libxml2 2.12:

  * xmlSubstituteEntitiesDefault
  * xmlParseMemory

So we update those with supported API.

Additionally, `res_calendar_caldav` has been updated to use libxml2's
xmlreader API instead of the SAX2 API which has always felt a little
hacky (see deleted comment block in `res_calendar_caldav.c`).

The xmlreader API has been around since libxml2 2.5.0 which was
released in 2003.

Fixes #725
2025-03-25 15:39:00 -06:00
Ben Ford
53766c5a74 documentation: Update Gosub, Goto, and add new documentationtype.
Gosub and Goto were not displaying their syntax correctly on the docs
site. This change adds a new way to specify an optional context, an
optional extension, and a required priority that the xml stylesheet can
parse without having to know which optional parameters come in which
order. In Asterisk, it looks like this:

  parameter name="context" documentationtype="dialplan_context"
  parameter name="extension" documentationtype="dialplan_extension"
  parameter name="priority" documentationtype="dialplan_priority" required="true"

The stylesheet will ignore the context and extension parameters, but for
priority, it will automatically inject the following:

  [[context,]extension,]priority

This is the correct oder for applications such as Gosub and Goto.
2025-03-19 16:50:49 +00:00
George Joseph
7b54359793 README.md: Updates and Fixes
* Outdated information has been removed.
* New links added.
* Placeholder added for link to change logs.

Going forward, the release process will create HTML versions of the README
and change log and will update the link in the README to the current
change log for the branch...

* In the development branches, the link will always point to the current
  release on GitHub.
* In the "releases/*" branches and the tarballs, the link will point to the
  ChangeLogs/ChangeLog-<version>.html file in the source directory.
* On the downloads website, the link will point to the
  ChangeLog-<version>.html file in the same directory.

Resolves: #1131
2025-03-13 13:15:03 +00:00
Shyju Kanaprath
eca57e71fb README.md: Removed outdated link
Removed outdated link http://www.quicknet.net from README.md

cherry-pick-to: 18
cherry-pick-to: 20
cherry-pick-to: 21
2025-03-11 09:42:10 -06:00
Naveen Albert
dc7b14dc88 general: Fix broken links.
This fixes a number of broken links throughout the
tree, mostly caused by wiki.asterisk.org being replaced
with docs.asterisk.org, which should eliminate the
need for sporadic fixes as in f28047db36.

Resolves: #430
2025-03-11 09:41:43 -06:00
Marcel Wagner
bd5cd70c56 documentation: Add information on running install_prereq script in readme
Adding information in the readme about running the install_preqreq script to install components that the ./configure script might indicate as missing.

ASTERISK-29976 #close

Change-Id: Ic287b46300168729838bddd8f9265e98fc22bce6
2025-03-11 09:41:28 -06:00
George Joseph
8f16bf9c8a .github: Change concurrency group ids so they're unique.
GitHub strikes again.  Apparently the github.ref context variable only
contains the PR number if the workflow is triggered by "pull_request" so
since we just changed the trigger to "pull_request_target" the variable
no longer contains the PR number and is therefore not unique and can't be
used as a concurrency group id.  We now use
`github.triggering_actor-github.head_ref`.
2025-02-20 10:45:13 -07:00
George Joseph
bff012d32a .github: Refactor Releaser to use reusable workflow 2025-02-16 16:30:35 -07:00
George Joseph
5f4a828056 .github: Change branch of reusable workflows to main. 2025-02-16 16:25:11 -07:00
George Joseph
c2c7d64538 .github: Refactor to use pull_request_target trigger.
After careful review, we believe we can now use the "pull_request_target"
workflow trigger instead of "pull_request" which required a separate
privliged workflow to add labels and comments to PRs when they are submitted
or updated.  This allows us to greatly streamline our workflows and remove
unneeded ones.

* The OnPRChanged workflow was...
  * Renamed to OnPRCheck
  * Changed to trigger on pull_request_target and the "recheckpr" label.
  * Changed to simply call reusable workflows in asterisk-ci-actions.
  * Changed to use better concurrency groups.
* The OnPRCPCheck and OnPRMergeApproved workflows were also...
  * Changed to simply call reusable workflows in asterisk-ci-actions.
  * Changed to use better concurrency groups.
* The NightlyTest and CreateDocs were also tweaked
2025-02-16 12:19:51 -07:00
George Joseph
f5f50b29e6 .github: Remove concurrency check in on-labelled workflows.
Apparently you can't use `${{ github.event.number }}` in a concurrency
block in a job that calls a reusable workflow. :(
2025-02-11 14:01:50 -07:00
George Joseph
d83b5be7dd .github: Move PRChanged,PRChangedPriv,PRCPCheck,PRReCheck,PRMerge logic.
Moved to asterisk-ci-actions reusable workflows.
2025-02-11 11:28:03 -07:00
George Joseph
3356a52fa0 .github: OnPRCherryPickTest,OnPRStateChanged,OnPRRecheck: Add job summaries.
...and refactor environment variables.
2025-02-10 13:20:21 -07:00
George Joseph
bd163881d4 .github: Clean up CreateDocs 2025-02-10 13:20:19 -07:00
Joshua C. Colp
eb3ee8bca4 LICENSE: Update company name, email, and address. 2025-01-23 15:40:29 +00:00
George Joseph
b4d8170101 README.md, asterisk.c: Update Copyright Dates 2025-01-23 13:34:26 +00:00
Sean Bright
27cc5f5071 manager.c: Rename restrictedFile to is_restricted_file.
Also correct the spelling of 'privileges.'
2025-01-10 18:09:23 +00:00
Ben Ford
5209eeaeb0 manager.c: Restrict ListCategories to the configuration directory.
When using the ListCategories AMI action, it was possible to traverse
upwards through the directories to files outside of the configured
configuration directory. This action is now restricted to the configured
directory and an error will now be returned if the specified file is
outside of this limitation.

Resolves: #GHSA-33x6-fj46-6rfh

UserNote: The ListCategories AMI action now restricts files to the
configured configuration directory.
2025-01-09 19:05:11 +00:00
George Joseph
ff94f597c0 .github: Set exit 0 in CherryPick and Recheck workflow Cleanup steps 2025-01-05 10:38:01 -07:00
George Joseph
d80361d6de gcc14: Fix issues caught by gcc 14
* reqresp_parser.c: Fix misuse of "static" with linked list definitions
* test_message.c: Fix segfaults caused by passing NULL as an sprintf fmt
2025-01-03 23:27:51 +00:00
George Joseph
bfce4ed473 .github: Change the run name for OnPRStateChangedPriv 2024-12-18 08:19:47 -07:00
George Joseph
b14fe81a4f res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
The suppress_moh_on_sendonly endpoint option should have been
defined as OPT_BOOL_T in pjsip_configuration.c and AST_BOOL_VALUES
in the alembic script instead of OPT_YESNO_T and YESNO_VALUES.

Also updated contrib/ast-db-manage/README.md to indicate that
AST_BOOL_VALUES should always be used and provided an example.

Resolves: #995
2024-11-18 16:29:49 +00:00
George Joseph
1eb7d5258b res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
Normally, when one party in a call sends Asterisk an SDP with
a "sendonly" or "inactive" attribute it means "hold" and causes
Asterisk to start playing MOH back to the other party. This can be
problematic if it happens at certain times, such as in a 183
Progress message, because the MOH will replace any early media you
may be playing to the calling party. If you set this option
to "yes" on an endpoint and the endpoint receives an SDP
with "sendonly" or "inactive", Asterisk will NOT play MOH back to
the other party.

Resolves: #979

UserNote: The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.
2024-11-13 16:05:35 +00:00
George Joseph
5a335b880d res_pjsip: Move tenantid to end of ast_sip_endpoint
The tenantid field was originally added to the ast_sip_endpoint
structure at the end of the AST_DECLARE_STRING_FIELDS block.  This
caused everything after it in the structure to move down in memory
and break ABI compatibility.  It's now at the end of the structure
as an AST_STRING_FIELD_EXTENDED.  Given the number of string fields
in the structure now, the initial string field allocation was
also increased from 64 to 128 bytes.

Resolves: #982
2024-11-12 20:16:37 +00:00
Ben Ford
47ce55885b app_mixmonitor: Add 'D' option for dual-channel audio.
Adds the 'D' option to app_mixmonitor that interleaves the input and
output frames of the channel being recorded in the monitor output frame.
This allows for two streams in the recording: the transmitted audio and
the received audio. The 't' and 'r' options are compatible with this.

Fixes: #945

UserNote: The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.
2024-11-04 20:09:27 +00:00
George Joseph
69a2bc15b5 .github: Redirect NightlyAdmin to AsteriskNightlyAdmin 2024-11-01 07:55:38 -06:00
George Joseph
3b51b1b294 .github: NightlyAdmin now calls external CloseStaleIssuesAndPRs 2024-11-01 07:53:42 -06:00
George Joseph
eecc0469c1 core_unreal.c: Fix memory leak in ast_unreal_new_channels()
When the channel tech is multistream capable, the reference to
chan_topology was passed to the new channel.  When the channel tech
isn't multistream capable, the reference to chan_topology was never
released.  "Local" channels are multistream capable so it didn't
affect them but the confbridge "CBAnn" and the bridge_media
"Recorder" channels are not so they caused a leak every time one
of them was created.

Also added tracing to ast_stream_topology_alloc() and
stream_topology_destroy() to assist with debugging.

Resolves: #938
2024-10-17 15:17:39 +00:00
George Joseph
cb2b263756 geolocation.sample.conf: Fix comment marker at end of file
Resolves: #937
2024-10-10 13:06:02 +00:00
George Joseph
b53034cf41 manager.c: Add unit test for Originate app and appdata permissions
This unit test checks that dialplan apps and app data specified
as parameters for the Originate action are allowed with the
permissions the user has.
2024-10-08 13:40:03 +00:00
Sean Bright
74df82e71c alembic: Drop redundant voicemail_messages index.
The `voicemail_messages_dir` index is a left prefix of the table's
primary key and therefore unnecessary.
2024-10-01 15:44:52 +00:00
Mike Bradeen
96d20e92bf app_voicemail: add NoOp alembic script to maintain sync
Adding a NoOp alembic script for the voicemail database to maintain
version sync with other branches.

Fixes: #527
2024-10-01 08:57:14 -06:00
Sean Bright
8bdc2304bb res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
Fixes #895
2024-09-25 16:51:20 +00:00
George Joseph
9f73bba6f4 Fix application references to Background
The app is actually named "BackGround" but several references
in XML documentation were spelled "Background" with the lower
case "g".  This was causing documentation links to return
"not found" messages.
2024-09-25 16:32:26 +00:00
George Joseph
1892234069 .github: Fix realtime param on Weekly and Nightly tests and...
Rename the "Cleanup" job in the cherry-pick and recheck jobs
to "Summary".
2024-09-23 08:26:10 -06:00
George Joseph
c9450b49f5 .github: Add WeeklyTests and make Nightlies Monday-Saturday
...and add "realtime" option.
2024-09-20 09:28:48 -06:00
George Joseph
a444430a76 .github: Changes required to use cached builds and shorten names 2024-09-18 08:06:30 -06:00
George Joseph
35e4fa7709 res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
The ub_result pointer passed to unbound_resolver_callback by
libunbound can be NULL if the query was for something malformed
like `.1` or `[.1]`.  If it is, we now set a 'ns_r_formerr' result
and return instead of crashing with a SEGV.  This causes pjproject
to simply cancel the transaction with a "No answer record in the DNS
response" error.  The existing "off nominal" unit test was also
updated to check this condition.

Although not necessary for this fix, we also made
ast_dns_resolver_completed() tolerant of a NULL result.

Resolves: GHSA-v428-g3cw-7hv9
2024-09-05 16:32:28 +00:00
Jean-Denis Girard
f5845b7d7d app_voicemail: Fix sql insert mismatch caused by cherry-pick
When commit e8c9cb80 was cherry-picked in from master, the
fact that the 20 and 18 branches still had the old "macrocontext"
column wasn't taken into account so the number of named parameters
didn't match the number of '?' placeholders.  They do now.

We also now use ast_asprintf to create the full mailbox query SQL
statement instead of trying to calculate the proper length ourselves.

Resolves: #831
2024-09-04 16:01:11 +00:00
Sean Bright
13d38eeabe alembic: Make 'revises' header comment match reality. 2024-08-20 13:01:26 +00:00
Mike Bradeen
8e97266810 res_pjsip_notify: add dialplan application
Add dialplan application PJSIPNOTIFY to send either pre-configured
NOTIFY messages from pjsip_notify.conf or with headers defined in
dialplan.

Also adds the ability to send pre-configured NOTIFY commands to a
channel via the CLI.

Resolves: #799

UserNote: A new dialplan application PJSIPNotify is now available
which can send SIP NOTIFY requests from the dialplan.

The pjsip send notify CLI command has also been enhanced to allow
sending NOTIFY messages to a specific channel. Syntax:

pjsip send notify <option> channel <channel>
2024-08-12 21:20:34 +00:00
George Joseph
0778c95e37 manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
If you run an AMI CoreShowChannelMap on a channel that isn't in a
bridge and you're in DEVMODE, you can get a FRACK because the
bridge id is empty.  We now simply return an empty list for that
request.
2024-08-12 18:26:07 +00:00
Ben Ford
9ee00e0d60 channel: Add multi-tenant identifier.
This patch introduces a new identifier for channels: tenantid. It's
a stringfield on the channel that can be used for general purposes. It
will be inherited by other channels the same way that linkedid is.

You can set tenantid in a few ways. The first is to set it in the
dialplan with the Set and CHANNEL functions:

exten => example,1,Set(CHANNEL(tenantid)=My tenant ID)

It can also be accessed via CHANNEL:

exten => example,2,NoOp(CHANNEL(tenantid))

Another method is to use the new tenantid option for pjsip endpoints in
pjsip.conf:

[my_endpoint]
type=endpoint
tenantid=My tenant ID

This is considered the best approach since you will be able to see the
tenant ID as early as the Newchannel event.

It can also be set using set_var in pjsip.conf on the endpoint like
setting other channel variable:

set_var=CHANNEL(tenantid)=My tenant ID

Note that set_var will not show tenant ID on the Newchannel event,
however.

Tenant ID has also been added to CDR. It's read-only and can be accessed
via CDR(tenantid). You can also get the tenant ID of the last channel
communicated with via CDR(peertenantid).

Tenant ID will also show up in CEL records if it has been set, and the
version number has been bumped accordingly.

Fixes: #740

UserNote: tenantid has been added to channels. It can be read in
dialplan via CHANNEL(tenantid), and it can be set using
Set(CHANNEL(tenantid)=My tenant ID). In pjsip.conf, it is recommended to
use the new tenantid option for pjsip endpoints (e.g., tenantid=My
tenant ID) so that it will show up in Newchannel events. You can set it
like any other channel variable using set_var in pjsip.conf as well, but
note that this will NOT show up in Newchannel events. Tenant ID is also
available in CDR and can be accessed with CDR(tenantid). The peer tenant
ID can also be accessed with CDR(peertenantid). CEL includes tenant ID
as well if it has been set.

UpgradeNote: A new versioned struct (ast_channel_initializers) has been
added that gets passed to __ast_channel_alloc_ap. The new function
ast_channel_alloc_with_initializers should be used when creating
channels that require the use of this struct. Currently the only value
in the struct is for tenantid, but now more fields can be added to the
struct as necessary rather than the __ast_channel_alloc_ap function. A
new option (tenantid) has been added to endpoints in pjsip.conf as well.
CEL has had its version bumped to include tenant ID.
2024-08-12 15:20:55 +00:00
George Joseph
a4a51829a3 manager.c: Add entries to Originate blacklist
Added Reload and DBdeltree to the list of dialplan application that
can't be executed via the Originate manager action without also
having write SYSTEM permissions.

Added CURL, DB*, FILE, ODBC and REALTIME* to the list of dialplan
functions that can't be executed via the Originate manager action
without also having write SYSTEM permissions.

If the Queue application is attempted to be run by the Originate
manager action and an AGI parameter is specified in the app data,
it'll be rejected unless the manager user has either the AGI or
SYSTEM permissions.

Resolves: #GHSA-c4cg-9275-6w44
2024-08-08 12:57:23 +00:00
Mike Bradeen
f974ea2810 res_stasis: fix intermittent delays on adding channel to bridge
Previously, on command execution, the control thread was awoken by
sending a SIGURG. It was found that this still resulted in some
instances where the thread was not immediately awoken.

This change instead sends a null frame to awaken the control thread,
which awakens the thread more consistently.

Resolves: #801
2024-08-06 18:04:48 +00:00
George Joseph
a47f92c2f8 .github: Allow testing an Asterisk PR against a testsuite PR 2024-07-26 13:00:11 -06:00
George Joseph
74328a7bfe .github: Add params to Releaser for FPBX issue creation 2024-07-26 07:30:45 -06:00
George Joseph
9e56766cde res_pjsip_config_wizard.c: Refactor load process
The way we have been initializing the config wizard prevented it
from registering its objects if res_pjsip happened to load
before it.

* We now use the object_type_registered sorcery observer to kick
things off instead of the wizard_mapped observer.

* The load_module function now checks if res_pjsip has been loaded
already and if it was it fires the proper observers so the objects
load correctly.

Resolves: #816

UserNote: The res_pjsip_config_wizard.so module can now be reloaded.
2024-07-24 19:21:09 +00:00
George Joseph
fa69a286a2 voicemail.conf.sample: Fix ':' comment typo
...and removed an errant trailing space.

Resolves: #819
2024-07-24 18:02:09 +00:00
George Joseph
3be176dfc4 bridge_softmix: Fix queueing VIDUPDATE control frames
softmix_bridge_write_control() now calls ast_bridge_queue_everyone_else()
with the bridge_channel so the VIDUPDATE control frame isn't echoed back.

softmix_bridge_write_control() was setting bridge_channel to NULL
when calling ast_bridge_queue_everyone_else() for VIDUPDATE control
frames.  This was causing the frame to be echoed back to the
channel it came from.  In certain cases, like when two channels or
bridges are being recorded, this can cause a ping-pong effect that
floods the system with VIDUPDATE control frames.

Resolves: #780
2024-07-19 16:47:06 +00:00
George Joseph
b7a46921c4 .github: Pass app_id and app_priv_key to AsteriskMergePR 2024-07-10 10:39:11 -06:00
George Joseph
6cd51f082b .github: Change OnPRMergeApproved to use default token 2024-07-10 09:30:49 -06:00
Sean Bright
4ec1be6530 logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
Fixes #785
2024-07-08 10:19:50 -06:00
George Joseph
c71fbca918 app_voicemail_odbc: Allow audio to be kept on disk
This commit adds a new voicemail.conf option 'odbc_audio_on_disk'
which when set causes the ODBC variant of app_voicemail to leave
the message and greeting audio files on disk and only store the
message metadata in the database.  This option came from a concern
that the database could grow to large and cause remote access
and/or replication to become slow.  In a clustering situation
with this option, all asterisk instances would share the same
database for the metadata and either use a shared filesystem
or other filesystem replication service much more suitable
for synchronizing files.

The changes to app_voicemail to implement this feature were actually
quite small but due to the complexity of the module, the actual
source code changes were greater.  They fall into the following
categories:

* Tracing.  The module is so complex that it was impossible to
figure out the path taken for various scenarios without the addition
of many SCOPE_ENTER, SCOPE_EXIT and ast_trace statements, even in
code that's not related to the functional change.  Making this worse
was the fact that many "if" statements in this module didn't use
braces.  Since the tracing macros add multiple statements, many "if"
statements had to be converted to use braces.

* Excessive use of PATH_MAX.  Previous maintainers of this module
used PATH_MAX to allocate character arrays for filesystem paths
and SQL statements as though they cost nothing.  In fact, PATH_MAX
is defined as 4096 bytes!  Some functions had (and still have)
multiples of these.  One function has 7.  Given that the vast
majority of installations use the default spool directory path
`/var/spool/asterisk/voicemail`, the actual path length is usually
less than 80 bytes.  That's over 4000 bytes wasted.  It was the
same for SQL statement buffers.  A 4K buffer for statement that
only needed 60 bytes.  All of these PATH_MAX allocations in the
ODBC related code were changed to dynamically allocated buffers.
The rest will have to be addressed separately.

* Bug fixes.  During the development of this feature, several
pre-existing ODBC related bugs were discovered and fixed.  They
had to do with leaving orphaned files on disk, not preserving
original message ids when moving messages between folders,
not honoring the "formats" config parameter in certain circumstances,
etc.

UserNote: This commit adds a new voicemail.conf option
'odbc_audio_on_disk' which when set causes the ODBC variant of
app_voicemail_odbc to leave the message and greeting audio files
on disk and only store the message metadata in the database.
Much more information can be found in the voicemail.conf.sample
file.
2024-07-08 10:19:50 -06:00
George Joseph
741b3c0dbb logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
If you're tracing a large function that may call another function
multiple times in different circumstances, it can be difficult to
see from the trace output exactly which location that function
was called from.  There's no good way to automatically determine
the calling location.  SCOPE_CALL and SCOPE_CALL_WITH_RESULT
simply print out a trace line before and after the call.

The difference between SCOPE_CALL and SCOPE_CALL_WITH_RESULT is
that SCOPE_CALL ignores the function's return value (if any) where
SCOPE_CALL_WITH_RESULT allows you to specify the type of the
function's return value so it can be assigned to a variable.
SCOPE_CALL_WITH_INT_RESULT is just a wrapper for SCOPE_CALL_WITH_RESULT
and the "int" return type.
2024-07-08 10:19:50 -06:00
Sean Bright
f8f23c6cef app_voicemail.c: Completely resequence mailbox folders.
Resequencing is a process that occurs when we open a voicemail folder
and discover that there are gaps between messages (e.g. `msg0000.txt`
is missing but `msg0001.txt` exists). Resequencing involves shifting
the existing messages down so we end up with a sequential list of
messages.

Currently, this process stops after reaching a threshold based on the
message limit (`maxmsg`) configured on the current folder. However, if
`maxmsg` is lowered when a voicemail folder contains more than
`maxmsg + 10` messages, resequencing will not run completely leaving
the mailbox in an inconsistent state.

We now resequence up to the maximum number of messages permitted by
`app_voicemail` (currently hard-coded at 9999 messages).

Fixes #86
2024-07-08 10:19:50 -06:00
George Joseph
9945c25f31 .github: Use ASTERISKTEAM_PAT for PR merging 2024-06-28 14:22:56 -06:00
George Joseph
0527ae4166 .github: Replace PR workflows with stubs that call reusables
The PR workflows now are just stubs that call reusable
workflows located in the asterisk-ci-actions repo.
2024-06-27 09:36:20 -06:00
George Joseph
a800a20308 .github: Refactor NightlyTests to use workflow in asterisk-ci-actions 2024-06-27 09:36:20 -06:00
George Joseph
1406d558dc .github: Add branches to workflow_dispatch for NightlyTests 2024-05-14 12:07:49 -06:00
Ivan Poddubny
7314a411a9 asterisk.c: Fix sending incorrect messages to systemd notify
Send "RELOADING=1" instead of "RELOAD=1" to follow the format
expected by systemd (see sd_notify(3) man page).

Do not send STOPPING=1 in remote console mode:
attempting to execute "asterisk -rx" by the main process leads to
a warning if NotifyAccess=main (the default) or to a forced termination
if NotifyAccess=all.
2024-05-06 16:08:51 +00:00
Sean Bright
178b2df38a res_http_websocket.c: Set hostname on client for certificate validation.
Additionally add a `assert()` to in the TLS client setup code to
ensure that hostname is set when it is supposed to be.

Fixes #433
2024-05-03 05:42:26 -03:00
George Joseph
7223dfe244 tcptls/iostream: Add support for setting SNI on client TLS connections
If the hostname field of the ast_tcptls_session_args structure is
set (which it is for websocket client connections), that hostname
will now automatically be used in an SNI TLS extension in the client
hello.

Resolves: #713

UserNote: Secure websocket client connections now send SNI in
the TLS client hello.
2024-04-29 13:23:40 +00:00
George Joseph
558d0a8033 make_buildopts_h: Always include DETECT_DEADLOCKS
Since DETECT_DEADLOCKS is now split from DEBUG_THREADS, it must
always be included in buildopts.h instead of only when
ADD_CFLAGS_TO_BUILDOPTS_H is defined.  A SEGV will result otherwise.

Resolves: #719
2024-04-29 13:01:05 +00:00
George Joseph
00940e2abd rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
rtp_engine.c and stun.c were calling ast_register_cleanup which
is skipped if any loadable module can't be cleanly unloaded
when asterisk shuts down.  Since this will always be the case,
their cleanup functions never get run.  In a practical sense
this makes no difference since asterisk is shutting down but if
you're in development mode and trying to use the leak sanitizer,
the leaks from both of those modules clutter up the output.
2024-04-09 20:12:33 +00:00
George Joseph
d214c72c2a manager.c: Add missing parameters to Login documentation
* Added the AuthType and Key parameters for MD5 authentication.

* Added the Events parameter.

Resolves: #689
2024-04-03 19:04:33 +00:00
George Joseph
0e0a56a0ca Fix incorrect application and function documentation references
There were a few references in the embedded documentation XML
where the case didn't match or where the referenced app or function
simply didn't exist any more.  These were causing 404 responses
in docs.asterisk.org.
2024-04-01 20:19:00 +00:00
George Joseph
a7e4c193fc .github: Add PAT to PRSubmitActions/Add Reviewers 2024-03-06 09:25:43 -07:00
George Joseph
18f3c355f7 .github: Remove timeout-minutes from gatetests 2024-03-05 15:19:43 -07:00
George Joseph
f841ae8e62 .github: Pass only single GATETEST_COMMAND to AsteriskGateComposite 2024-03-05 11:24:22 -07:00
George Joseph
386cdef149 Rename dialplan_functions.xml to dialplan_functions_doc.xml
When using COMPILE_DOUBLE, dialplan_functions.xml is mistaken
for the source for an embedded XML document and gets compiled
to dialplan_functions.o.  This causes dialplan_functions.c to
be ignored making its functions unavailable and causing chan_pjsip
to fail to load.
2024-02-26 16:20:41 -07:00
Sean Bright
b4ecf5eaf1 openssl: Supress deprecation warnings from OpenSSL 3.0
There is work going on to update our OpenSSL usage to avoid the
deprecated functions but in the meantime make it possible to compile
in devmode.

Change-Id: Ib082eb8b3751f0185d8aa8fe127da664c93f0726
2024-02-26 16:20:30 -07:00
George Joseph
031703c596 .github: Add force_cherry_pick option to Releaser 2024-02-20 06:58:36 -07:00
George Joseph
7d65b0ad80 .github: Remove start_version from Releaser 2024-02-20 06:55:29 -07:00
Mike Bradeen
e0be8be337 app_chanspy: Add 'D' option for dual-channel audio
Adds the 'D' option to app chanspy that causes the input and output
frames of the spied channel to be interleaved in the spy output frame.
This allows the input and output of the spied channel to be decoded
separately by the receiver.

If the 'o' option is also set, the 'D' option is ignored as the
audio being spied is inherently one direction.

Fixes: #569

UserNote: The ChanSpy application now accepts the 'D' option which
will interleave the spied audio within the outgoing frames. The
purpose of this is to allow the audio to be read as a Dual channel
stream with separate incoming and outgoing audio. Setting both the
'o' option and the 'D' option and results in the 'D' option being
ignored.
2024-02-06 17:21:23 +00:00
George Joseph
be9b5bf0a9 .github: Update github-script to v7 and fix a rest bug
Need to update the github-script to v7 to squash deprecation
warnings.

Also fixed the API name for github.rest.pulls.requestReviewers.
2024-02-05 08:36:29 -07:00
Naveen Albert
3ff081e581 manager.c: Fix regression due to using wrong free function.
Commit 424be34563 introduced
a regression by calling ast_free on memory allocated by
realpath. This causes Asterisk to abort when executing this
function. Since the memory is allocated by glibc, it should
be freed using ast_std_free.

Resolves: #513
2024-01-02 12:07:02 +00:00
George Joseph
a4f9d885a7 res_rtp_asterisk: Fix regression issues with DTLS client check
* Since ICE candidates are used for the check and pjproject is
  required to use ICE, res_rtp_asterisk was failing to compile
  when pjproject wasn't available.  The check is now wrapped
  with an #ifdef HAVE_PJPROJECT.

* The rtp->ice_active_remote_candidates container was being
  used to check the address on incoming packets but that
  container doesn't contain peer reflexive candidates discovered
  during negotiation. This was causing the check to fail
  where it shouldn't.  We now check against pjproject's
  real_ice->rcand array which will contain those candidates.

* Also fixed a bug in ast_sockaddr_from_pj_sockaddr() where
  we weren't zeroing out sin->sin_zero before returning.  This
  was causing ast_sockaddr_cmp() to always return false when
  one of the inputs was converted from a pj_sockaddr, even
  if both inputs had the same address and port.

Resolves: #500
Resolves: #503
Resolves: #505
2023-12-20 14:02:29 +00:00
George Joseph
85fc4ce712 doc: Remove obsolete CHANGES-staging directrory
This should have been removed after the last release but
was missed.
2023-12-15 20:04:48 +00:00
Gitea
6b4f9ab005 res_pjsip_header_funcs: Duplicate new header value, don't copy.
When updating an existing header the 'update' code incorrectly
just copied the new value into the existing buffer. If the
new value exceeded the available buffer size memory outside
of the buffer would be written into, potentially causing
a crash.

This change makes it so that the 'update' now duplicates
the new header value instead of copying it into the existing
buffer.
2023-12-14 18:48:42 +00:00
George Joseph
2b66362173 res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
When ICE is in use, we can prevent a possible DOS attack by allowing
DTLS protocol messages (client hello, etc) only from sources that
are in the active remote candidates list.

Resolves: GHSA-hxj9-xwr8-w8pq
2023-12-14 18:48:14 +00:00
Ben Ford
705cd2845d manager.c: Prevent path traversal with GetConfig.
When using AMI GetConfig, it was possible to access files outside of the
Asterisk configuration directory by using filenames with ".." and "./"
even while live_dangerously was not enabled. This change resolves the
full path and ensures we are still in the configuration directory before
attempting to access the file.
2023-12-14 18:47:33 +00:00
Mike Bradeen
c7050787f3 res_pjsip: disable raw bad packet logging
Add patch to split the log level for invalid packets received on the signaling port.
    The warning regarding the packet will move to level 2 so that it can still be displayed,
    while the raw packet will be at level 4.
2023-12-14 18:47:21 +00:00
George Joseph
0f20f39db8 MergeApproved.yml: Remove unneeded concurrency
The concurrency parameter on the MergeAndCherryPick job has
been rmeoved.  It was a hold-over from earlier days.
2023-12-06 14:29:24 -07:00
George Joseph
c53cd1c82d SECURITY.md: Update with correct documentation URL 2023-11-09 11:46:33 -07:00
George Joseph
8e012faf9e chan_pjsip: Add PJSIPHangup dialplan app and manager action
See UserNote below.

Exposed the existing Hangup AMI action in manager.c so we can use
all of it's channel search and AMI protocol handling without
duplicating that code in dialplan_functions.c.

Added a lookup function to res_pjsip.c that takes in the
string represenation of the pjsip_status_code enum and returns
the actual status code.  I.E.  ast_sip_str2rc("DECLINE") returns
603.  This allows the caller to specify PJSIPHangup(decline) in
the dialplan, just like Hangup(call_rejected).

Also extracted the XML documentation to its own file since it was
almost as large as the code itself.

UserNote: A new dialplan app PJSIPHangup and AMI action allows you
to hang up an unanswered incoming PJSIP call with a specific SIP
response code in the 400 -> 699 range.
2023-11-07 10:42:12 -07:00
Mark Murawski
81c400a1c2 Remove files that are no longer updated
Fixes: #360
2023-11-01 08:27:45 -06:00
Mike Bradeen
db5767f19d res_speech: allow speech to translate input channel
* Allow res_speech to translate the input channel if the
  format is translatable to a format suppored by the
  speech provider.

Resolves: #129

UserNote: res_speech now supports translation of an input channel
to a format supported by the speech provider, provided a translation
path is available between the source format and provider capabilites.
2023-10-30 11:52:08 +00:00
George Joseph
05d26994af .github: PRSubmitActions: Fix adding reviewers to PR 2023-10-19 09:57:20 -06:00
George Joseph
cd640dc67b .github: New PR Submit workflows
The workflows that get triggered when PRs are submitted or updated
have been replaced with ones that are more secure and have
a higher level of parallelism.
2023-10-17 12:34:19 -06:00
George Joseph
5eb676bab5 .github: New PR Submit workflows
The workflows that get triggered when PRs are submitted or updated
have been replaced with ones that are more secure and have
a higher level of parallelism.
2023-10-17 12:32:14 -06:00
Mike Bradeen
5342562892 res_stasis: signal when new command is queued
res_statsis's app loop sleeps for up to .2s waiting on input
to a channel before re-checking the command queue. This can
cause delays between channel setup and bridge.

This change is to send a SIGURG on the sleeping thread when
a new command is enqueued. This exits the sleeping thread out
of the ast_waitfor() call triggering the new command being
processed on the channel immediately.

Resolves: #362

UserNote: Call setup times should be significantly improved
when using ARI.
2023-10-10 17:18:03 +00:00
George Joseph
20b06e7bb5 logger.h: Add ability to change the prefix on SCOPE_TRACE output
You can now define the _TRACE_PREFIX_ macro to change the
default trace line prefix of "file:line function" to
something else.  Full documentation in logger.h.
2023-10-09 15:36:51 +00:00
George Joseph
d0a1c2b026 .github: Fix job prereqs in PROpenedUpdated 2023-10-09 08:50:02 -06:00
George Joseph
825d3b981a .github: Block PR tests until approved 2023-10-09 08:49:58 -06:00
George Joseph
733ab35848 Add libjwt to third-party
The current STIR/SHAKEN implementation is not currently usable due
to encryption issues. Rather than trying to futz with OpenSSL and
the the current code, we can take advantage of the existing
capabilities of libjwt but we first need to add it to the
third-party infrastructure already in place for jansson and
pjproject.

A few tweaks were also made to the third-party infrastructure as
a whole.  The jansson "dest" install directory was renamed "dist"
to better match convention, and the third-party Makefile was updated
to clean all product directories not just the ones currently in
use.

Resolves: #349
2023-10-05 11:52:12 -06:00
Mike Bradeen
7369de127a res_pjsip: update qualify_timeout documentation with DNS note
The documentation on qualify_timeout does not explicitly state that the timeout
includes any time required to perform any needed DNS queries on the endpoint.

If the OPTIONS response is delayed due to the DNS query, it can still render an
endpoint as Unreachable if the net time is enough for qualify_timeout to expire.

Resolves: #352
2023-10-05 16:59:03 +00:00
George Joseph
04183eb246 lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
Previously, DETECT_DEADLOCKS depended on DEBUG_THREADS.
Unfortunately, DEBUG_THREADS adds a lot of lock tracking overhead
to all of the lock lifecycle calls whereas DETECT_DEADLOCKS just
causes the lock calls to loop over trylock in 200us intervals until
the lock is obtained and spits out log messages if it takes more
than 5 seconds.  From a code perspective, the only reason they were
tied together was for logging.  So... The ifdefs in lock.c were
refactored to allow DETECT_DEADLOCKS to be enabled without
also enabling DEBUG_THREADS.

Resolves: #321

UserNote: You no longer need to select DEBUG_THREADS to use
DETECT_DEADLOCKS.  This removes a significant amount of overhead
if you just want to detect possible deadlocks vs needing full
lock tracing.
2023-09-22 14:34:43 +00:00
Mike Bradeen
5c58a6fd56 cel: add publish user event helper
Add a wrapper function around ast_cel_publish_event that
packs event and extras into a blob before publishing

Resolves:#330
2023-09-21 14:47:18 +00:00
George Joseph
7b42ebb90d file.c: Add ability to search custom dir for sounds
To better co-exist with sounds files that may be managed by
packages, custom sound files may now be placed in
AST_DATA_DIR/sounds/custom instead of the standard
AST_DATA_DIR/sounds/<lang> directory.  If the new
"sounds_search_custom_dir" option in asterisk.conf is set
to "true", asterisk will search the custom directory for sounds
files before searching the standard directory.  For performance
reasons, the "sounds_search_custom_dir" defaults to "false".

Resolves: #315

UserNote: A new option "sounds_search_custom_dir" has been added to
asterisk.conf that allows asterisk to search
AST_DATA_DIR/sounds/custom for sounds files before searching the
standard AST_DATA_DIR/sounds/<lang> directory.
2023-09-20 19:15:03 +00:00
George Joseph
8d506370f5 make_buildopts_h, et. al. Allow adding all cflags to buildopts.h
The previous behavior of make_buildopts_h was to not add the
non-ABI-breaking MENUSELECT_CFLAGS like DETECT_DEADLOCKS,
REF_DEBUG, etc. to the buildopts.h file because "it caused
ccache to invalidate files and extended compile times". They're
only defined by passing them on the gcc command line with '-D'
options.   In practice, including them in the include file rarely
causes any impact because the only time ccache cares is if you
actually change an option so the hit occurrs only once after
you change it.

OK so why would we want to include them?  Many IDEs follow the
include files to resolve defines and if the options aren't in an
include file, it can cause the IDE to mark blocks of "ifdeffed"
code as unused when they're really not.

So...

* Added a new menuselect compile option ADD_CFLAGS_TO_BUILDOPTS_H
  which tells make_buildopts_h to include the non-ABI-breaking
  flags in buildopts.h as well as the ABI-breaking ones. The default
  is disabled to preserve current behavior.  As before though,
  only the ABI-breaking flags appear in AST_BUILDOPTS and only
  those are used to calculate AST_BUILDOPT_SUM.
  A new AST_BUILDOPT_ALL define was created to capture all of the
  flags.

* make_version_c was streamlined to use buildopts.h and also to
  create asterisk_build_opts_all[] and ast_get_build_opts_all(void)

* "core show settings" now shows both AST_BUILDOPTS and
  AST_BUILDOPTS_ALL.

UserNote: The "Build Options" entry in the "core show settings"
CLI command has been renamed to "ABI related Build Options" and
a new entry named "All Build Options" has been added that shows
both breaking and non-breaking options.
2023-09-14 17:58:22 +00:00
Mike Bradeen
cf623753a9 func_periodic_hook: Add hangup step to avoid timeout
func_periodic_hook does not hangup after playback, relying on hangup
which keeps the channel alive longer than necessary.

Resolves: #325
2023-09-13 17:36:41 +00:00
George Joseph
2e59f9fd6a func_periodic_hook: Don't truncate channel name
func_periodic_hook was truncating long channel names which
causes issues when you need to run other dialplan functions/apps
on the channel.

Resolves: #319
2023-09-13 15:17:55 +00:00
George Joseph
4e43b9d308 safe_asterisk: Change directory permissions to 755
If the safe_asterisk script detects that the /var/lib/asterisk
directory doesn't exist, it now creates it with 755 permissions
instead of 770.  safe_asterisk needing to create that directory
should be extremely rare though because it's normally created
by 'make install' which already sets the permissions to 755.

Resolves: #316
2023-09-13 15:17:17 +00:00
Joshua C. Colp
405a08aaed variables: Add additional variable dialplan functions.
Using the Set dialplan application does not actually
delete channel or global variables. Instead the
variables are set to an empty value.

This change adds two dialplan functions,
GLOBAL_DELETE and DELETE which can be used to
delete global and channel variables instead
of just setting them to empty.

There is also no ability within the dialplan to
determine if a global or channel variable has
actually been set or not.

This change also adds two dialplan functions,
GLOBAL_EXISTS and VARIABLE_EXISTS which can be
used to determine if a global or channel variable
has been set or not.

Resolves: #289

UserNote: Four new dialplan functions have been added.
GLOBAL_DELETE and DELETE have been added which allows
the deletion of global and channel variables.
GLOBAL_EXISTS and VARIABLE_EXISTS have been added
which checks whether a global or channel variable has
been set.
2023-09-07 11:27:59 +00:00
George Joseph
3d01cbaae9 ari-stubs: Fix more local anchor references
Also allow CreateDocs job to be run manually with default branches.
2023-09-05 13:36:23 -06:00
George Joseph
2f1d12b7dc ari-stubs: Fix more local anchor references
Also allow CreateDocs job to be run manually with default branches.
2023-09-05 13:05:53 -06:00
George Joseph
e54d867f25 ari-stubs: Fix broken documentation anchors
All of the links that reference page anchors with capital letters in
the ids (#Something) have been changed to lower case to match the
anchors that are generated by mkdocs.
2023-09-05 09:55:56 -06:00
George Joseph
d2172582f7 rest-api: Updates for new documentation site
The new documentation site uses traditional markdown instead
of the Confluence flavored version.  This required changes in
the mustache templates and the python that generates the files.
2023-08-31 08:22:07 -06:00
George Joseph
56e592248d .github: Update workflow-application-token-action to v2 2023-08-31 07:26:12 -06:00
Mike Bradeen
8f5fb2af23 app_voicemail: Fix for loop declarations
Resolve for loop initial declarations added in cli changes.

Resolves: #275
2023-08-30 13:05:27 +00:00
George Joseph
bebf843253 download_externals: Fix a few version related issues
* Fixed issue with the script not parsing the new tag format for
  certified releases.  The format changed from certified/18.9-cert5
  to certified-18.9-cert5.

* Fixed issue where the asterisk version wasn't being considered
  when looking for cached versions.

Resolves: #263
2023-08-22 13:32:16 +00:00
George Joseph
87773dc11f Remove .lastclean and .version from source control
Historically these were checked in for certified releases but
since the move to github and the unified release process,
they are no longer needed and cause issues.
2023-08-22 11:34:16 +00:00
George Joseph
a95f98f8bb .github: Use generic releaser 2023-08-15 13:13:16 -06:00
Joshua C. Colp
c83c14ba2d manager: Tolerate stasis messages with no channel snapshot.
In some cases I have yet to determine some stasis messages may
be created without a channel snapshot. This change adds some
tolerance to this scenario, preventing a crash from occurring.
2023-08-11 13:29:03 +00:00
Joshua C. Colp
b37b28e071 audiohook: Unlock channel in mute if no audiohooks present.
In the case where mute was called on a channel that had no
audiohooks the code was not unlocking the channel, resulting
in a deadlock.

Resolves: #233
2023-08-09 14:50:02 +00:00
Joshua C. Colp
82c0971e6e app_queue: Add support for applying caller priority change immediately.
The app_queue module provides both an AMI action and a CLI command
to change the priority of a caller in a queue. Up to now this change
of priority has only been reflected to new callers into the queue.

This change adds an "immediate" option to both the AMI action and
CLI command which immediately applies the priority change respective
to the other callers already in the queue. This can allow, for example,
a caller to be placed at the head of the queue immediately if their
priority is sufficient.

Resolves: #202

UserNote: The 'queue priority caller' CLI command and
'QueueChangePriorityCaller' AMI action now have an 'immediate'
argument which allows the caller priority change to be reflected
immediately, causing the position of a caller to move within the
queue depending on the priorities of the other callers.
2023-07-18 13:03:01 +00:00
George Joseph
8aba4a4f88 .github: Fix cherry-pick reminder issues 2023-07-17 09:26:56 -06:00
George Joseph
e46f7892a6 app.h: Move declaration of ast_getdata_result before its first use
The ast_app_getdata() and ast_app_getdata_terminator() declarations
in app.h were changed recently to return enum ast_getdata_result
(which is how they were defined in app.c).  The existing
declaration of ast_getdata_result in app.h was about 1000 lines
after those functions however so under certain circumstances,
a "use before declaration" error was thrown by the compiler.
The declaration of the enum was therefore moved to before those
functions.

Resolves: #200
2023-07-12 17:44:47 +00:00
George Joseph
7c84bf40e0 doc: Remove obsolete CHANGES-staging and UPGRADE-staging 2023-07-12 17:41:45 +00:00
Sean Bright
836f0bed18 res_geolocation: Ensure required 'location_info' is present.
Fixes #189
2023-07-12 17:39:07 +00:00
Mike Bradeen
4929a2c419 Adds manager actions to allow move/remove/forward individual messages
in a particular mailbox folder. The forward command can be used
to copy a message within a mailbox or to another mailbox. Also adds
a VoicemailBoxSummarry, required to retrieve message ID's.

Resolves: #181

UserNote: The following manager actions have been added

VoicemailBoxSummary - Generate message list for a given mailbox

VoicemailRemove - Remove a message from a mailbox folder

VoicemailMove - Move a message from one folder to another within a mailbox

VoicemailForward - Copy a message from one folder in one mailbox
to another folder in another or the same mailbox.
2023-07-12 17:37:36 +00:00
Mike Bradeen
8f8413b494 app_voicemail: add CLI commands for message manipulation
Adds CLI commands to allow move/remove/forward individual messages
from a particular mailbox folder. The forward command can be used
to copy a message within a mailbox or to another mailbox. Also adds
a show mailbox, required to retrieve message ID's.

Resolves: #170

UserNote: The following CLI commands have been added to app_voicemail

voicemail show mailbox <mailbox> <context>
Show contents of mailbox <mailbox>@<context>

voicemail remove <mailbox> <context> <from_folder> <messageid>
Remove message <messageid> from <from_folder> in mailbox <mailbox>@<context>

voicemail move <mailbox> <context> <from_folder> <messageid> <to_folder>
Move message <messageid> in mailbox <mailbox>&<context> from <from_folder> to <to_folder>

voicemail forward <from_mailbox> <from_context> <from_folder> <messageid> <to_mailbox> <to_context> <to_folder>
Forward message <messageid> in mailbox <mailbox>@<context> <from_folder> to
mailbox <mailbox>@<context> <to_folder>
2023-07-12 17:36:55 +00:00
George Joseph
3bb5cef959 .github: Minor tweak to Asterisk Releaser 2023-07-12 06:49:25 -06:00
George Joseph
e1e294a5e3 .github: Suppress cherry-pick reminder for some situations
In PROpenedOrUpdated, the cherry-pick reminder will now be
suppressed if there are already valid 'cherry-pick-to' comments
in the PR or the PR contained a 'cherry-pick-to: none' comment.
2023-07-11 06:35:39 -06:00
Sean Bright
2291ea7a6b apply_patches: Use globbing instead of file/sort.
This accomplishes the same thing as a `find ... | sort` but with the
added benefit of clarity and avoiding a call to a subshell.

Additionally drop the -s option from call to patch as it is not POSIX.
2023-07-07 15:12:08 +00:00
George Joseph
6dc6d11671 apply_patches: Sort patch list before applying
The apply_patches script wasn't sorting the list of patches in
the "patches" directory before applying them. This left the list
in an indeterminate order. In most cases, the list is actually
sorted but rarely, they can be out of order and cause dependent
patches to fail to apply.

We now sort the list but the "sort" program wasn't in the
configure scripts so we needed to add that and regenerate
the scripts as well.

Resolves: #193
2023-07-06 14:04:16 +00:00
George Joseph
452e0d7258 bundled_pjproject: Backport security fixes from pjproject 2.13.1
Merge-pull-request-from-GHSA-9pfh-r8x4-w26w.patch
Merge-pull-request-from-GHSA-cxwq-5g9x-x7fr.patch
Locking-fix-so-that-SSL_shutdown-and-SSL_write-are-n.patch
Don-t-call-SSL_shutdown-when-receiving-SSL_ERROR_SYS.patch

Resolves: #188
2023-07-05 10:05:50 -06:00
George Joseph
15ecfab8d1 .github: Updates for AsteriskReleaser 2023-06-30 07:02:24 -06:00
Mike Bradeen
f5f09246e2 res_musiconhold: avoid moh state access on unlocked chan
Move channel unlock to after moh state access to avoid
potential unlocked access to state.

Resolves: #133
2023-06-29 15:15:12 +00:00
Mike Bradeen
2822bb3977 utils: add lock timestamps for DEBUG_THREADS
Adds last locked and unlocked timestamps as well as a
counter for the number of times the lock has been
attempted (vs locked/unlocked) to debug output printed
using the DEBUG_THREADS option.

Resolves: #110
2023-06-29 15:13:52 +00:00
George Joseph
e52ad19715 .github: Back out triggering PROpenedOrUpdated by label 2023-06-29 09:07:06 -06:00
George Joseph
a44ac70801 .github: Move publish docs to new file CreateDocs.yml 2023-06-27 12:18:51 -06:00
George Joseph
a41f911ba3 .github: Remove result check from PROpenUpdateGateTests 2023-06-27 05:18:14 -06:00
George Joseph
8c49e751b8 .github: Fix use of 'contains' 2023-06-26 08:45:42 -06:00
George Joseph
f6a323be8d .github: Add recheck label test to additional jobs 2023-06-26 07:46:23 -06:00
George Joseph
523474a2f3 .github: Fix recheck label typos 2023-06-26 07:22:09 -06:00
George Joseph
036951e21a .github: Fix recheck label manipulation 2023-06-26 07:11:58 -06:00
George Joseph
efa4b02a0d .github: Allow PR submit checks to be re-run by label 2023-06-26 07:08:07 -06:00
Ben Ford
8c76507b9f res_pjsip_session: Added new function calls to avoid ABI issues.
Added two new functions (ast_sip_session_get_dialog and
ast_sip_session_get_pjsip_inv_state) that retrieve the dialog and the
pjsip_inv_state respectively from the pjsip_inv_session on the
ast_sip_session struct. This is due to pjproject adding a new field to
the pjsip_inv_session struct that caused crashes when trying to access
fields that were no longer where they were expected to be if a module
was compiled against a different version of pjproject.

Resolves: #145
2023-06-13 17:57:32 +00:00
George Joseph
7dfc190e23 test_statis_endpoints: Fix channel_messages test again 2023-06-12 08:37:56 -06:00
George Joseph
653aee2f13 test_stasis_endpoints.c: Make channel_messages more stable
The channel_messages test was assuming that stasis would return
messages in a specific order.  This is an incorrect assumption as
message ordering was never guaranteed.  This was causing the test
to fail occasionally.  We now test all the messages for the
required message types instead of testing one by one.

Resolves: #158
2023-06-09 23:28:12 +00:00
George Joseph
8b93cd97e8 build: Fix a few gcc 13 issues
* gcc 13 is now catching when a function is declared as returning
  an enum but defined as returning an int or vice versa.  Fixed
  a few in app.h, loader.c, stasis_message.c.

* gcc 13 is also now (incorrectly) complaining of dangling pointers
  when assigning a pointer to a local char array to a char *. Had
  to change that to an ast_alloca.

Resolves: #155
2023-06-09 19:03:24 +00:00
George Joseph
2645b68a08 .github: Rework for merge approval 2023-06-08 13:34:50 -06:00
Ben Ford
1f32a01485 AMI: Add CoreShowChannelMap action.
Adds a new AMI action (CoreShowChannelMap) that takes in a channel name
and provides a list of all channels that are connected to that channel,
following local channel connections as well.

Resolves: #104

UserNote: New AMI action CoreShowChannelMap has been added.
2023-06-05 18:30:42 +00:00
George Joseph
1216508654 .github: Fix issues with cherry-pick-reminder 2023-06-05 10:38:31 -06:00
Mike Bradeen
5bfe94461a indications: logging changes
Increase verbosity to indicate failure due to missing country
and to specify default on CLI dump

Resolves: #89
2023-06-05 13:31:57 +00:00
George Joseph
6c43294975 .github Ignore error when adding reviewrs to PR 2023-06-05 07:16:44 -06:00
George Joseph
7c5f7fffb3 .github: Update field descriptions for AsteriskReleaser 2023-05-26 08:52:03 -06:00
George Joseph
0c173be750 .github: Change title of AsteriskReleaser job 2023-05-23 08:05:06 -06:00
George Joseph
1077728ddc .github: Don't add cherry-pick reminder if it's already present 2023-05-22 12:55:06 -06:00
George Joseph
57e3390a81 .github: Fix quoting in PROpenedOrUpdated 2023-05-16 16:12:05 -06:00
George Joseph
6d71d8eea5 .github: Add cherry-pick reminder to new PRs 2023-05-15 09:38:03 -06:00
Sean Bright
e73e5f7ed4 core: Cleanup gerrit and JIRA references. (#40) (#61)
* Remove .gitreview and switch to pulling the main asterisk branch
  version from configure.ac instead.

* Replace references to JIRA with GitHub.

* Other minor cleanup found along the way.

Resolves: #39
2023-05-10 06:17:10 -06:00
Joshua C. Colp
10b40dad53 .github: Tweak improvement issue type language. 2023-05-09 10:47:43 -03:00
Gitea
a74ef79ce2 .github: Tweak new feature language, and move feature requests elsewhere. 2023-05-09 10:43:58 -03:00
Joshua C. Colp
3ef4c8a72c .github: Fix staleness check to only run on certain labels. 2023-05-09 06:18:33 -03:00
George Joseph
493c2debf8 .github: Add AsteriskReleaser 2023-05-08 11:01:57 -06:00
Mike Bradeen
61f4399082 cel: add local optimization begin event
The current AST_CEL_LOCAL_OPTIMIZE event is and has been
triggered on a local optimization end to serve as a flag
indicating the event occurred.  This change adds a second
AST_CEL_LOCAL_OPTIMIZE_BEGIN event for further detail.

Resolves: #52

UpgradeNote: The existing AST_CEL_LOCAL_OPTIMIZE can continue
to be used as-is and the AST_CEL_LOCAL_OPTIMIZE_BEGIN event
can be ignored if desired.

UserNote: The new AST_CEL_LOCAL_OPTIMIZE_BEGIN can be used
by itself or in conert with the existing
AST_CEL_LOCAL_OPTIMIZE to book-end local channel optimizaion.
2023-05-04 14:53:07 +00:00
George Joseph
b9ad757aab .github: Fix CherryPickTest to only run when it should
Fixed CherryPickTest so it triggers only on the
"cherry-pick-test" label instead of all labels.
2023-05-03 09:30:55 -06:00
George Joseph
e95eba5894 .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS 2023-05-02 14:10:15 -06:00
George Joseph
4b982965e9 .github: Remove separate set labels step from new PR 2023-05-02 12:11:48 -06:00
George Joseph
bcfaea4a8b .github: Refactor CP progress and add new PR test progress 2023-05-02 12:05:13 -06:00
George Joseph
8900c3f7a7 .github: Add cherry-pick test progress labels 2023-05-02 08:58:33 -06:00
George Joseph
04668ea95b .github: Update issue templates 2023-05-01 09:38:03 -06:00
George Joseph
d566b3e413 .github: Remove unnecessary parameter in CherryPickTest 2023-05-01 06:52:32 -06:00
George Joseph
f09894cddf Initial GitHub PRs 2023-04-28 12:31:57 -06:00
George Joseph
a7f6e3d674 Initial GitHub Issue Templates 2023-04-28 11:32:01 -06:00
George Joseph
fe9c904a65 test.c: Fix counting of tests and add 2 new tests
The unit test XML output was counting all registered tests as "run"
even when only a subset were actually requested to be run and
the "failures" attribute was missing.

* The "tests" attribute of the "testsuite" element in the
  output XML now reflects only the tests actually requested
  to be executed instead of all the tests registered.

* The "failures" attribute was added to the "testsuite"
  element.

Also added 2 new unit tests that just pass and fail to be
used for CI testing.

Change-Id: Ia137814b5aeb0e1a44c75034bd3615c26021da69
2023-04-10 08:53:46 -06:00
Mike Bradeen
0af1da68f1 res_mixmonitor: MixMonitorMute by MixMonitor ID
While it is possible to create multiple mixmonitor instances
on a channel, it was not previously possible to mute individual
instances.

This change includes the ability to specify the MixMonitorID
when calling the manager action: MixMonitorMute.  This will
allow an individual MixMonitor instance to be muted via id.
This id can be stored as a channel variable using the 'i'
MixMonitor option.

As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor spy-type audiohooks on the channel.
This is done via the new audiohook function:
ast_audiohook_set_mute_all.

ASTERISK-30464

Change-Id: Ibba8c7e750577aa1595a24b23316ef445245be98
2023-03-20 09:23:47 -05:00
Mike Bradeen
d5f3db3e73 format_sln: add .slin as supported file extension
Adds '.slin' to existing supported file extensions:
.sln and .raw

ASTERISK-30465

Change-Id: Ice848addc03a64c8404b87cb5d3b13399c57e496
2023-03-20 09:06:01 -05:00
Mike Bradeen
450345386f bridge_builtin_features: add beep via touch variable
Add periodic beep option to one-touch recording by setting
the touch variable TOUCH_MONITOR_BEEP or
TOUCH_MIXMONITOR_BEEP to the desired interval in seconds.

If the interval is less than 5 seconds, a minimum of 5
seconds will be imposed.  If the interval is set to an
invalid value, it will default to 15 seconds.

A new test event PERIODIC_HOOK_ENABLED was added to the
func_periodic_hook hook_on function to indicate when
a hook is started.  This is so we can test that the touch
variable starts the hook as expected.

ASTERISK-30446

Change-Id: I800e494a789ba7a930bbdcd717e89d86040d6661
2023-03-16 15:44:27 -06:00
Mike Bradeen
1a649af1b1 cli: increase channel column width
For 'core show channels', the Channel name field is increased
to 64 characters and the Location name field is increased to
32 characters.

For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.

ASTERISK-30455

Change-Id: Ibec3742ce360ffc93bc56e9984c2a21dabc4d5e1
2023-03-13 14:51:04 -06:00
Mike Bradeen
7952316bf1 app_senddtmf: Add option to answer target channel.
Adds a new option to SendDTMF() which will answer the specified
channel if it is not already up. If no channel is specified, the
current channel will be answered instead.

ASTERISK-30422

Change-Id: Iddcbd501fcdf9fef0f453b7a8115a90b11f1d085
(cherry picked from commit f015d3e0cc)
2023-02-28 03:57:46 -06:00
Mike Bradeen
9e6a70b586 app_directory: Add a 'skip call' option.
Adds 's' option to skip calling the extension and instead set the
extension as DIRECTORY_EXTEN channel variable.

ASTERISK-30405

Change-Id: Ib9d9db1ba5b7524594c640461b4aa8f752db8299
2023-02-28 03:57:24 -06:00
Mike Bradeen
4bf3f6c04e app_read: Add an option to return terminator on empty digits.
Adds 'e' option to allow Read() to return the terminator as the
dialed digits in the case where only the terminator is entered.

ie; if "#" is entered, return "#" if the 'e' option is set and ""
if it is not.

ASTERISK-30411

Change-Id: I49f3221824330a193a20c660f99da0f1fc2cbbc5
2023-02-27 12:15:57 -06:00
Mike Bradeen
d334e0cf89 app_directory: add ability to specify configuration file
Adds option to app_directory to specify a filename from which to
read configuration instead of voicemail.conf ie;

same => n,Directory(,,c(directory.conf))

This configuration should contain a list of extensions using the
voicemail.conf format, ie;

2020=2020,Dog Dog,,,,attach=no|saycid=no|envelope=no|delete=no

ASTERISK-30404

Change-Id: Id58ccb1344ad1e563fa10db12f172fbd104a9d13
(cherry picked from commit ef6901e137)
2023-01-30 10:52:34 -06:00
36 changed files with 222 additions and 3923 deletions

View File

@@ -3,6 +3,16 @@ run-name: ${{ github.actor }} is creating ${{vars.PRODUCT_NAME}} release ${{inpu
on:
workflow_dispatch:
inputs:
release_type:
description: |
Release Type:
required: true
type: choice
options:
- STANDARD
- SECURITY
- HOTFIX
default: STANDARD
new_version:
description: |
New Version:
@@ -11,24 +21,16 @@ on:
certified-20.4-cert1-rc1, certified-20.4-cert1
required: true
type: string
is_security:
description: |
Security?
(No prev RCs)
required: true
type: boolean
default: false
advisories:
description: |
Comma separated list of advisories.
Comma separated list of advisories for SECURITY releases.
NO SPACES
Example: GHSA-4xjp-22g4-9fxm,GHSA-4xjp-22g4-zzzz
required: false
type: string
is_hotfix:
skip_cherry_pick:
description: |
Hotfix?
(A patch release but not security. No prev RCs)
Skip automatic cherry-pick for regular RC1 releases? USE WITH CAUTION!
required: true
type: boolean
default: false
@@ -38,6 +40,12 @@ on:
required: true
type: boolean
default: false
skip_test_builds:
description: |
Skip test builds? USE WITH CAUTION!
required: true
type: boolean
default: false
push_release_branches:
description: |
Push release branches live?
@@ -67,11 +75,12 @@ jobs:
Releaser:
uses: asterisk/asterisk-ci-actions/.github/workflows/AsteriskRelease.yml@main
with:
release_type: ${{inputs.release_type}}
new_version: ${{inputs.new_version}}
is_security: ${{inputs.is_security}}
advisories: ${{inputs.advisories}}
is_hotfix: ${{inputs.is_hotfix}}
skip_cherry_pick: ${{inputs.skip_cherry_pick}}
force_cherry_pick: ${{inputs.force_cherry_pick}}
skip_test_builds: ${{inputs.skip_test_builds}}
push_release_branches: ${{inputs.push_release_branches}}
create_github_release: ${{inputs.create_github_release}}
push_tarballs: ${{inputs.push_tarballs}}
@@ -79,7 +88,7 @@ jobs:
secrets:
gpg_private_key: ${{secrets.ASTDEV_GPG_PRIV_KEY}}
asteriskteam_gh_token: ${{secrets.ASTERISKTEAM_PAT}}
asteriskteamsa_username: ${{secrets.ASTERISKTEAMSA_GMAIL_ACCT}}
asteriskteamsa_token: ${{secrets.ASTERISKTEAMSA_GMAIL_TOKEN}}
asteriskteam_email_username: ${{secrets.ASTERISKTEAM_SES_KEY_ID}}
asteriskteam_email_secret: ${{secrets.ASTERISKTEAM_SES_KEY_SECRET}}
deploy_ssh_priv_key: ${{secrets.DOWNLOADS_DEPLOY_SSH_PRIV_KEY}}
deploy_ssh_username: ${{secrets.DOWNLOADS_DEPLOY_SSH_USERNAME}}

View File

@@ -1 +0,0 @@
certified-18.9-cert17

View File

@@ -1 +0,0 @@
ChangeLogs/ChangeLog-certified-18.9-cert17.html

View File

@@ -1 +0,0 @@
ChangeLogs/ChangeLog-certified-18.9-cert17.md

View File

@@ -1,166 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert10
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert10.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert9...certified-18.9-cert10)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert10.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 4
- Commit Authors: 2
- Issues Resolved: 0
- Security Advisories Resolved: 0
### User Notes:
- #### app_voicemail_odbc: Allow audio to be kept on disk
This commit adds a new voicemail.conf option
'odbc_audio_on_disk' which when set causes the ODBC variant of
app_voicemail_odbc to leave the message and greeting audio files
on disk and only store the message metadata in the database.
Much more information can be found in the voicemail.conf.sample
file.
### Upgrade Notes:
### Commit Authors:
- George Joseph: (2)
- Sean Bright: (2)
## Issue and Commit Detail:
### Closed Issues:
None
### Commits By Author:
- ### George Joseph (2):
- logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
- app_voicemail_odbc: Allow audio to be kept on disk
- ### Sean Bright (2):
- app_voicemail.c: Completely resequence mailbox folders.
- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
### Commit List:
- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
- app_voicemail_odbc: Allow audio to be kept on disk
- logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
- app_voicemail.c: Completely resequence mailbox folders.
### Commit Details:
#### logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
Author: Sean Bright
Date: 2024-06-29
Fixes #785
#### app_voicemail_odbc: Allow audio to be kept on disk
Author: George Joseph
Date: 2024-04-09
This commit adds a new voicemail.conf option 'odbc_audio_on_disk'
which when set causes the ODBC variant of app_voicemail to leave
the message and greeting audio files on disk and only store the
message metadata in the database. This option came from a concern
that the database could grow to large and cause remote access
and/or replication to become slow. In a clustering situation
with this option, all asterisk instances would share the same
database for the metadata and either use a shared filesystem
or other filesystem replication service much more suitable
for synchronizing files.
The changes to app_voicemail to implement this feature were actually
quite small but due to the complexity of the module, the actual
source code changes were greater. They fall into the following
categories:
* Tracing. The module is so complex that it was impossible to
figure out the path taken for various scenarios without the addition
of many SCOPE_ENTER, SCOPE_EXIT and ast_trace statements, even in
code that's not related to the functional change. Making this worse
was the fact that many "if" statements in this module didn't use
braces. Since the tracing macros add multiple statements, many "if"
statements had to be converted to use braces.
* Excessive use of PATH_MAX. Previous maintainers of this module
used PATH_MAX to allocate character arrays for filesystem paths
and SQL statements as though they cost nothing. In fact, PATH_MAX
is defined as 4096 bytes! Some functions had (and still have)
multiples of these. One function has 7. Given that the vast
majority of installations use the default spool directory path
`/var/spool/asterisk/voicemail`, the actual path length is usually
less than 80 bytes. That's over 4000 bytes wasted. It was the
same for SQL statement buffers. A 4K buffer for statement that
only needed 60 bytes. All of these PATH_MAX allocations in the
ODBC related code were changed to dynamically allocated buffers.
The rest will have to be addressed separately.
* Bug fixes. During the development of this feature, several
pre-existing ODBC related bugs were discovered and fixed. They
had to do with leaving orphaned files on disk, not preserving
original message ids when moving messages between folders,
not honoring the "formats" config parameter in certain circumstances,
etc.
UserNote: This commit adds a new voicemail.conf option
'odbc_audio_on_disk' which when set causes the ODBC variant of
app_voicemail_odbc to leave the message and greeting audio files
on disk and only store the message metadata in the database.
Much more information can be found in the voicemail.conf.sample
file.
#### logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT
Author: George Joseph
Date: 2024-04-09
If you're tracing a large function that may call another function
multiple times in different circumstances, it can be difficult to
see from the trace output exactly which location that function
was called from. There's no good way to automatically determine
the calling location. SCOPE_CALL and SCOPE_CALL_WITH_RESULT
simply print out a trace line before and after the call.
The difference between SCOPE_CALL and SCOPE_CALL_WITH_RESULT is
that SCOPE_CALL ignores the function's return value (if any) where
SCOPE_CALL_WITH_RESULT allows you to specify the type of the
function's return value so it can be assigned to a variable.
SCOPE_CALL_WITH_INT_RESULT is just a wrapper for SCOPE_CALL_WITH_RESULT
and the "int" return type.
#### app_voicemail.c: Completely resequence mailbox folders.
Author: Sean Bright
Date: 2023-11-27
Resequencing is a process that occurs when we open a voicemail folder
and discover that there are gaps between messages (e.g. `msg0000.txt`
is missing but `msg0001.txt` exists). Resequencing involves shifting
the existing messages down so we end up with a sequential list of
messages.
Currently, this process stops after reaching a threshold based on the
message limit (`maxmsg`) configured on the current folder. However, if
`maxmsg` is lowered when a voicemail folder contains more than
`maxmsg + 10` messages, resequencing will not run completely leaving
the mailbox in an inconsistent state.
We now resequence up to the maximum number of messages permitted by
`app_voicemail` (currently hard-coded at 9999 messages).
Fixes #86

View File

@@ -1,139 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert11
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert11.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert10...certified-18.9-cert11)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert11.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 5
- Commit Authors: 2
- Issues Resolved: 4
- Security Advisories Resolved: 1
- [GHSA-c4cg-9275-6w44](https://github.com/asterisk/asterisk/security/advisories/GHSA-c4cg-9275-6w44): Write=originate, is sufficient permissions for code execution / System() dialplan
### User Notes:
- #### res_pjsip_config_wizard.c: Refactor load process
The res_pjsip_config_wizard.so module can now be reloaded.
### Upgrade Notes:
### Commit Authors:
- George Joseph: (4)
- Mike Bradeen: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-c4cg-9275-6w44: Write=originate, is sufficient permissions for code execution / System() dialplan
- 780: [bug]: Infinite loop of "Indicated Video Update", max CPU usage
- 801: [bug]: res_stasis: Occasional 200ms delay adding channel to a bridge
- 816: [bug]: res_pjsip_config_wizard doesn't load properly if res_pjsip is loaded first
- 819: [bug]: Typo in voicemail.conf.sample that stops it from loading when using "make samples"
### Commits By Author:
- #### George Joseph (4):
- manager.c: Add entries to Originate blacklist
- bridge_softmix: Fix queueing VIDUPDATE control frames
- voicemail.conf.sample: Fix ':' comment typo
- res_pjsip_config_wizard.c: Refactor load process
- #### Mike Bradeen (1):
- res_stasis: fix intermittent delays on adding channel to bridge
### Commit List:
- res_stasis: fix intermittent delays on adding channel to bridge
- res_pjsip_config_wizard.c: Refactor load process
- voicemail.conf.sample: Fix ':' comment typo
- bridge_softmix: Fix queueing VIDUPDATE control frames
- manager.c: Add entries to Originate blacklist
### Commit Details:
#### res_stasis: fix intermittent delays on adding channel to bridge
Author: Mike Bradeen
Date: 2024-07-10
Previously, on command execution, the control thread was awoken by
sending a SIGURG. It was found that this still resulted in some
instances where the thread was not immediately awoken.
This change instead sends a null frame to awaken the control thread,
which awakens the thread more consistently.
Resolves: #801
#### res_pjsip_config_wizard.c: Refactor load process
Author: George Joseph
Date: 2024-07-23
The way we have been initializing the config wizard prevented it
from registering its objects if res_pjsip happened to load
before it.
* We now use the object_type_registered sorcery observer to kick
things off instead of the wizard_mapped observer.
* The load_module function now checks if res_pjsip has been loaded
already and if it was it fires the proper observers so the objects
load correctly.
Resolves: #816
UserNote: The res_pjsip_config_wizard.so module can now be reloaded.
#### voicemail.conf.sample: Fix ':' comment typo
Author: George Joseph
Date: 2024-07-24
...and removed an errant trailing space.
Resolves: #819
#### bridge_softmix: Fix queueing VIDUPDATE control frames
Author: George Joseph
Date: 2024-07-17
softmix_bridge_write_control() now calls ast_bridge_queue_everyone_else()
with the bridge_channel so the VIDUPDATE control frame isn't echoed back.
softmix_bridge_write_control() was setting bridge_channel to NULL
when calling ast_bridge_queue_everyone_else() for VIDUPDATE control
frames. This was causing the frame to be echoed back to the
channel it came from. In certain cases, like when two channels or
bridges are being recorded, this can cause a ping-pong effect that
floods the system with VIDUPDATE control frames.
Resolves: #780
#### manager.c: Add entries to Originate blacklist
Author: George Joseph
Date: 2024-07-22
Added Reload and DBdeltree to the list of dialplan application that
can't be executed via the Originate manager action without also
having write SYSTEM permissions.
Added CURL, DB*, FILE, ODBC and REALTIME* to the list of dialplan
functions that can't be executed via the Originate manager action
without also having write SYSTEM permissions.
If the Queue application is attempted to be run by the Originate
manager action and an AGI parameter is specified in the app data,
it'll be rejected unless the manager user has either the AGI or
SYSTEM permissions.
Resolves: #GHSA-c4cg-9275-6w44

View File

@@ -1,233 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert12
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert12.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert11...certified-18.9-cert12)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert12.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 6
- Commit Authors: 5
- Issues Resolved: 3
- Security Advisories Resolved: 1
- [GHSA-v428-g3cw-7hv9](https://github.com/asterisk/asterisk/security/advisories/GHSA-v428-g3cw-7hv9): A malformed Contact or Record-Route URI in an incoming SIP request can cause Asterisk to crash when res_resolver_unbound is used
### User Notes:
- #### res_pjsip_notify: add dialplan application
A new dialplan application PJSIPNotify is now available
which can send SIP NOTIFY requests from the dialplan.
The pjsip send notify CLI command has also been enhanced to allow
sending NOTIFY messages to a specific channel. Syntax:
pjsip send notify <option> channel <channel>
- #### channel: Add multi-tenant identifier.
tenantid has been added to channels. It can be read in
dialplan via CHANNEL(tenantid), and it can be set using
Set(CHANNEL(tenantid)=My tenant ID). In pjsip.conf, it is recommended to
use the new tenantid option for pjsip endpoints (e.g., tenantid=My
tenant ID) so that it will show up in Newchannel events. You can set it
like any other channel variable using set_var in pjsip.conf as well, but
note that this will NOT show up in Newchannel events. Tenant ID is also
available in CDR and can be accessed with CDR(tenantid). The peer tenant
ID can also be accessed with CDR(peertenantid). CEL includes tenant ID
as well if it has been set.
### Upgrade Notes:
- #### channel: Add multi-tenant identifier.
A new versioned struct (ast_channel_initializers) has been
added that gets passed to __ast_channel_alloc_ap. The new function
ast_channel_alloc_with_initializers should be used when creating
channels that require the use of this struct. Currently the only value
in the struct is for tenantid, but now more fields can be added to the
struct as necessary rather than the __ast_channel_alloc_ap function. A
new option (tenantid) has been added to endpoints in pjsip.conf as well.
CEL has had its version bumped to include tenant ID.
### Commit Authors:
- Ben Ford: (1)
- George Joseph: (2)
- Jean-Denis Girard: (1)
- Mike Bradeen: (1)
- Sean Bright: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-v428-g3cw-7hv9: A malformed Contact or Record-Route URI in an incoming SIP request can cause Asterisk to crash when res_resolver_unbound is used
- 740: [new-feature]: Add multi-tenant identifier to chan_pjsip
- 799: [improvement]: Add PJSIPNOTIFY dialplan application
- 831: [bug]: app_voicemail ODBC
### Commits By Author:
- #### Ben Ford (1):
- channel: Add multi-tenant identifier.
- #### George Joseph (2):
- res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
- manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
- #### Jean-Denis Girard (1):
- app_voicemail: Fix sql insert mismatch caused by cherry-pick
- #### Mike Bradeen (1):
- res_pjsip_notify: add dialplan application
- #### Sean Bright (1):
- alembic: Make 'revises' header comment match reality.
### Commit List:
- app_voicemail: Fix sql insert mismatch caused by cherry-pick
- alembic: Make 'revises' header comment match reality.
- res_pjsip_notify: add dialplan application
- manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
- channel: Add multi-tenant identifier.
- res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
### Commit Details:
#### app_voicemail: Fix sql insert mismatch caused by cherry-pick
Author: Jean-Denis Girard
Date: 2024-08-07
When commit e8c9cb80 was cherry-picked in from master, the
fact that the 20 and 18 branches still had the old "macrocontext"
column wasn't taken into account so the number of named parameters
didn't match the number of '?' placeholders. They do now.
We also now use ast_asprintf to create the full mailbox query SQL
statement instead of trying to calculate the proper length ourselves.
Resolves: #831
#### alembic: Make 'revises' header comment match reality.
Author: Sean Bright
Date: 2024-08-17
#### res_pjsip_notify: add dialplan application
Author: Mike Bradeen
Date: 2024-07-09
Add dialplan application PJSIPNOTIFY to send either pre-configured
NOTIFY messages from pjsip_notify.conf or with headers defined in
dialplan.
Also adds the ability to send pre-configured NOTIFY commands to a
channel via the CLI.
Resolves: #799
UserNote: A new dialplan application PJSIPNotify is now available
which can send SIP NOTIFY requests from the dialplan.
The pjsip send notify CLI command has also been enhanced to allow
sending NOTIFY messages to a specific channel. Syntax:
pjsip send notify <option> channel <channel>
#### manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
Author: George Joseph
Date: 2024-08-08
If you run an AMI CoreShowChannelMap on a channel that isn't in a
bridge and you're in DEVMODE, you can get a FRACK because the
bridge id is empty. We now simply return an empty list for that
request.
#### channel: Add multi-tenant identifier.
Author: Ben Ford
Date: 2024-05-21
This patch introduces a new identifier for channels: tenantid. It's
a stringfield on the channel that can be used for general purposes. It
will be inherited by other channels the same way that linkedid is.
You can set tenantid in a few ways. The first is to set it in the
dialplan with the Set and CHANNEL functions:
exten => example,1,Set(CHANNEL(tenantid)=My tenant ID)
It can also be accessed via CHANNEL:
exten => example,2,NoOp(CHANNEL(tenantid))
Another method is to use the new tenantid option for pjsip endpoints in
pjsip.conf:
[my_endpoint]
type=endpoint
tenantid=My tenant ID
This is considered the best approach since you will be able to see the
tenant ID as early as the Newchannel event.
It can also be set using set_var in pjsip.conf on the endpoint like
setting other channel variable:
set_var=CHANNEL(tenantid)=My tenant ID
Note that set_var will not show tenant ID on the Newchannel event,
however.
Tenant ID has also been added to CDR. It's read-only and can be accessed
via CDR(tenantid). You can also get the tenant ID of the last channel
communicated with via CDR(peertenantid).
Tenant ID will also show up in CEL records if it has been set, and the
version number has been bumped accordingly.
Fixes: #740
UserNote: tenantid has been added to channels. It can be read in
dialplan via CHANNEL(tenantid), and it can be set using
Set(CHANNEL(tenantid)=My tenant ID). In pjsip.conf, it is recommended to
use the new tenantid option for pjsip endpoints (e.g., tenantid=My
tenant ID) so that it will show up in Newchannel events. You can set it
like any other channel variable using set_var in pjsip.conf as well, but
note that this will NOT show up in Newchannel events. Tenant ID is also
available in CDR and can be accessed with CDR(tenantid). The peer tenant
ID can also be accessed with CDR(peertenantid). CEL includes tenant ID
as well if it has been set.
UpgradeNote: A new versioned struct (ast_channel_initializers) has been
added that gets passed to __ast_channel_alloc_ap. The new function
ast_channel_alloc_with_initializers should be used when creating
channels that require the use of this struct. Currently the only value
in the struct is for tenantid, but now more fields can be added to the
struct as necessary rather than the __ast_channel_alloc_ap function. A
new option (tenantid) has been added to endpoints in pjsip.conf as well.
CEL has had its version bumped to include tenant ID.
#### res_resolver_unbound: Test for NULL ub_result in unbound_resolver_callback
Author: George Joseph
Date: 2024-08-12
The ub_result pointer passed to unbound_resolver_callback by
libunbound can be NULL if the query was for something malformed
like `.1` or `[.1]`. If it is, we now set a 'ns_r_formerr' result
and return instead of crashing with a SEGV. This causes pjproject
to simply cancel the transaction with a "No answer record in the DNS
response" error. The existing "off nominal" unit test was also
updated to check this condition.
Although not necessary for this fix, we also made
ast_dns_resolver_completed() tolerant of a NULL result.
Resolves: GHSA-v428-g3cw-7hv9

View File

@@ -1,65 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert13
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert13.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert12...certified-18.9-cert13)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert13.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-33x6-fj46-6rfh](https://github.com/asterisk/asterisk/security/advisories/GHSA-33x6-fj46-6rfh): Path traversal via AMI ListCategories allows access to outside files
### User Notes:
- #### manager.c: Restrict ListCategories to the configuration directory.
The ListCategories AMI action now restricts files to the
configured configuration directory.
### Upgrade Notes:
### Commit Authors:
- Ben Ford: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-33x6-fj46-6rfh: Path traversal via AMI ListCategories allows access to outside files
### Commits By Author:
- #### Ben Ford (1):
- manager.c: Restrict ListCategories to the configuration directory.
### Commit List:
- manager.c: Restrict ListCategories to the configuration directory.
### Commit Details:
#### manager.c: Restrict ListCategories to the configuration directory.
Author: Ben Ford
Date: 2024-12-17
When using the ListCategories AMI action, it was possible to traverse
upwards through the directories to files outside of the configured
configuration directory. This action is now restricted to the configured
directory and an error will now be returned if the specified file is
outside of this limitation.
Resolves: #GHSA-33x6-fj46-6rfh
UserNote: The ListCategories AMI action now restricts files to the
configured configuration directory.

View File

@@ -1,66 +0,0 @@
<html><head><title>ChangeLog for asterisk-certified-18.9-cert14</title></head><body>
<h2>Change Log for Release asterisk-certified-18.9-cert14</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert14.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/certified-18.9-cert13...certified-18.9-cert14">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert14.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: 2</li>
<li>Commit Authors: 1</li>
<li>Issues Resolved: 0</li>
<li>Security Advisories Resolved: 2</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-2grh-7mhv-fcfw">GHSA-2grh-7mhv-fcfw</a>: Using malformed From header can forge identity with ";" or NULL in name portion</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-c7p6-7mvq-8jq2">GHSA-c7p6-7mvq-8jq2</a>: cli_permissions.conf: deny option does not work for disallowing shell commands</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>asterisk.c: Add option to restrict shell access from remote consoles.</h4>
A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.
Resolves: #GHSA-c7p6-7mvq-8jq2</li>
</ul>
<h3>Upgrade Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>George Joseph: (2)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-2grh-7mhv-fcfw: Using malformed From header can forge identity with ";" or NULL in name portion</li>
<li>!GHSA-c7p6-7mvq-8jq2: cli_permissions.conf: deny option does not work for disallowing shell commands</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>George Joseph (2):</h4>
</li>
<li>res_pjsip_messaging.c: Mask control characters in received From display name</li>
<li>asterisk.c: Add option to restrict shell access from remote consoles.</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>asterisk.c: Add option to restrict shell access from remote consoles.</li>
<li>res_pjsip_messaging.c: Mask control characters in received From display name</li>
</ul>
<h3>Commit Details:</h3>
<h4>asterisk.c: Add option to restrict shell access from remote consoles.</h4>
<p>Author: George Joseph
Date: 2025-05-19</p>
<p>UserNote: A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.</p>
<p>Resolves: #GHSA-c7p6-7mvq-8jq2</p>
<h4>res_pjsip_messaging.c: Mask control characters in received From display name</h4>
<p>Author: George Joseph
Date: 2025-03-24</p>
<p>Incoming SIP MESSAGEs will now have their From header's display name
sanitized by replacing any characters &lt; 32 (space) with a space.</p>
<p>Resolves: #GHSA-2grh-7mhv-fcfw</p>
</body></html>

View File

@@ -1,75 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert14
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert14.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert13...certified-18.9-cert14)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert14.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 2
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 2
- [GHSA-2grh-7mhv-fcfw](https://github.com/asterisk/asterisk/security/advisories/GHSA-2grh-7mhv-fcfw): Using malformed From header can forge identity with ";" or NULL in name portion
- [GHSA-c7p6-7mvq-8jq2](https://github.com/asterisk/asterisk/security/advisories/GHSA-c7p6-7mvq-8jq2): cli_permissions.conf: deny option does not work for disallowing shell commands
### User Notes:
- #### asterisk.c: Add option to restrict shell access from remote consoles.
A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.
Resolves: #GHSA-c7p6-7mvq-8jq2
### Upgrade Notes:
### Commit Authors:
- George Joseph: (2)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-2grh-7mhv-fcfw: Using malformed From header can forge identity with ";" or NULL in name portion
- !GHSA-c7p6-7mvq-8jq2: cli_permissions.conf: deny option does not work for disallowing shell commands
### Commits By Author:
- #### George Joseph (2):
- res_pjsip_messaging.c: Mask control characters in received From display name
- asterisk.c: Add option to restrict shell access from remote consoles.
### Commit List:
- asterisk.c: Add option to restrict shell access from remote consoles.
- res_pjsip_messaging.c: Mask control characters in received From display name
### Commit Details:
#### asterisk.c: Add option to restrict shell access from remote consoles.
Author: George Joseph
Date: 2025-05-19
UserNote: A new asterisk.conf option 'disable_remote_console_shell' has
been added that, when set, will prevent remote consoles from executing
shell commands using the '!' prefix.
Resolves: #GHSA-c7p6-7mvq-8jq2
#### res_pjsip_messaging.c: Mask control characters in received From display name
Author: George Joseph
Date: 2025-03-24
Incoming SIP MESSAGEs will now have their From header's display name
sanitized by replacing any characters < 32 (space) with a space.
Resolves: #GHSA-2grh-7mhv-fcfw

View File

@@ -1,370 +0,0 @@
<html><head><title>ChangeLog for asterisk-certified-18.9-cert15</title></head><body>
<h2>Change Log for Release asterisk-certified-18.9-cert15</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert15.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/certified-18.9-cert14...certified-18.9-cert15">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert15.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: 25</li>
<li>Commit Authors: 8</li>
<li>Issues Resolved: 10</li>
<li>Security Advisories Resolved: 0</li>
</ul>
<h3>User Notes:</h3>
<ul>
<li>
<h4>res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"</h4>
<p>The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.</p>
</li>
<li>
<h4>app_mixmonitor: Add 'D' option for dual-channel audio.</h4>
<p>The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.</p>
</li>
</ul>
<h3>Upgrade Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>Ben Ford: (2)</li>
<li>George Joseph: (12)</li>
<li>Joshua C. Colp: (1)</li>
<li>Marcel Wagner: (1)</li>
<li>Mike Bradeen: (1)</li>
<li>Naveen Albert: (1)</li>
<li>Sean Bright: (6)</li>
<li>Shyju Kanaprath: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>430: [bug]: Fix broken links</li>
<li>527: [bug]: app_voicemail_odbc no longer working after removal of macrocontext.</li>
<li>937: [bug]: Wrong format for sample config file 'geolocation.conf.sample'</li>
<li>938: [bug]: memory leak - CBAnn leaks a small amount format_cap related memory for every confbridge</li>
<li>945: [improvement]: Add stereo recording support for app_mixmonitor</li>
<li>979: [improvement]: Add ability to suppress MOH when a remote endpoint sends "sendonly" or "inactive"</li>
<li>982: [bug]: The addition of tenantid to the ast_sip_endpoint structure broke ABI compatibility</li>
<li>995: [bug]: suppress_moh_on_sendonly should use AST_BOOL_VALUES instead of YESNO_VALUES in alembic script</li>
<li>1131: [bug]: CHANGES link broken in README.md</li>
<li>ASTERISK-29976: Should Readme include information about install_prereq script?</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>Ben Ford (2):</h4>
</li>
<li>app_mixmonitor: Add 'D' option for dual-channel audio.</li>
<li>
<p>documentation: Update Gosub, Goto, and add new documentationtype.</p>
</li>
<li>
<h4>George Joseph (12):</h4>
</li>
<li>Fix application references to Background</li>
<li>manager.c: Add unit test for Originate app and appdata permissions</li>
<li>geolocation.sample.conf: Fix comment marker at end of file</li>
<li>core_unreal.c: Fix memory leak in ast_unreal_new_channels()</li>
<li>res_pjsip: Move tenantid to end of ast_sip_endpoint</li>
<li>res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"</li>
<li>res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T</li>
<li>gcc14: Fix issues caught by gcc 14</li>
<li>README.md, asterisk.c: Update Copyright Dates</li>
<li>README.md: Updates and Fixes</li>
<li>build_tools: Backport from 18</li>
<li>
<p>res_pjsip: Backport pjsip uri utilities.</p>
</li>
<li>
<h4>Joshua C. Colp (1):</h4>
</li>
<li>
<p>LICENSE: Update company name, email, and address.</p>
</li>
<li>
<h4>Marcel Wagner (1):</h4>
</li>
<li>
<p>documentation: Add information on running install_prereq script in readme</p>
</li>
<li>
<h4>Mike Bradeen (1):</h4>
</li>
<li>
<p>app_voicemail: add NoOp alembic script to maintain sync</p>
</li>
<li>
<h4>Naveen Albert (1):</h4>
</li>
<li>
<p>general: Fix broken links.</p>
</li>
<li>
<h4>Sean Bright (6):</h4>
</li>
<li>res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery</li>
<li>alembic: Drop redundant voicemail_messages index.</li>
<li>manager.c: Rename restrictedFile to is_restricted_file.</li>
<li>xml.c: Update deprecated libxml2 API usage.</li>
<li>chan_dahdi.c: Resolve a format-truncation build warning.</li>
<li>
<p>chan_sip.c: Fix __sip_reliable_xmit build error</p>
</li>
<li>
<h4>Shyju Kanaprath (1):</h4>
</li>
<li>README.md: Removed outdated link</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>res_pjsip: Backport pjsip uri utilities.</li>
<li>build_tools: Backport from 18</li>
<li>chan_sip.c: Fix __sip_reliable_xmit build error</li>
<li>chan_dahdi.c: Resolve a format-truncation build warning.</li>
<li>xml.c: Update deprecated libxml2 API usage.</li>
<li>documentation: Update Gosub, Goto, and add new documentationtype.</li>
<li>README.md: Updates and Fixes</li>
<li>README.md: Removed outdated link</li>
<li>general: Fix broken links.</li>
<li>documentation: Add information on running install_prereq script in readme</li>
<li>LICENSE: Update company name, email, and address.</li>
<li>README.md, asterisk.c: Update Copyright Dates</li>
<li>manager.c: Rename restrictedFile to is_restricted_file.</li>
<li>gcc14: Fix issues caught by gcc 14</li>
<li>res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T</li>
<li>res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"</li>
<li>res_pjsip: Move tenantid to end of ast_sip_endpoint</li>
<li>app_mixmonitor: Add 'D' option for dual-channel audio.</li>
<li>core_unreal.c: Fix memory leak in ast_unreal_new_channels()</li>
<li>geolocation.sample.conf: Fix comment marker at end of file</li>
<li>manager.c: Add unit test for Originate app and appdata permissions</li>
<li>alembic: Drop redundant voicemail_messages index.</li>
<li>app_voicemail: add NoOp alembic script to maintain sync</li>
<li>res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery</li>
<li>Fix application references to Background</li>
</ul>
<h3>Commit Details:</h3>
<h4>res_pjsip: Backport pjsip uri utilities.</h4>
<p>Author: George Joseph
Date: 2025-03-25</p>
<p>The following utilities have been backported:</p>
<p>ast_sip_is_uri_sip_sips
ast_sip_is_allowed_uri
ast_sip_pjsip_uri_get_username
ast_sip_pjsip_uri_get_hostname
ast_sip_pjsip_uri_get_other_param</p>
<p>They were originally included in the commit for supporting TEL uris.
Support for TEL uris is NOT included here however.</p>
<h4>build_tools: Backport from 18</h4>
<p>Author: George Joseph
Date: 2025-03-25</p>
<p>There are several build fixes that never made it into certified/18.9.
Unfortunately the commits that contained the fixes also contained other
stuff that won't cherry-pick into cert so the build files had to be
just copied from 18.</p>
<h4>chan_sip.c: Fix __sip_reliable_xmit build error</h4>
<p>Author: Sean Bright
Date: 2024-10-17</p>
<p>Fixes #954</p>
<h4>chan_dahdi.c: Resolve a format-truncation build warning.</h4>
<p>Author: Sean Bright
Date: 2022-08-19</p>
<p>With gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0:</p>
<blockquote>
<p>chan_dahdi.c:4129:18: error: %s directive output may be truncated
writing up to 255 bytes into a region of size between 242 and 252
[-Werror=format-truncation=]</p>
</blockquote>
<p>This removes the error-prone sizeof(...) calculations in favor of just
doubling the size of the base buffer.</p>
<h4>xml.c: Update deprecated libxml2 API usage.</h4>
<p>Author: Sean Bright
Date: 2024-05-23</p>
<p>Two functions are deprecated as of libxml2 2.12:</p>
<pre><code>* xmlSubstituteEntitiesDefault
* xmlParseMemory
</code></pre>
<p>So we update those with supported API.</p>
<p>Additionally, <code>res_calendar_caldav</code> has been updated to use libxml2's
xmlreader API instead of the SAX2 API which has always felt a little
hacky (see deleted comment block in <code>res_calendar_caldav.c</code>).</p>
<p>The xmlreader API has been around since libxml2 2.5.0 which was
released in 2003.</p>
<p>Fixes #725</p>
<h4>documentation: Update Gosub, Goto, and add new documentationtype.</h4>
<p>Author: Ben Ford
Date: 2025-03-14</p>
<p>Gosub and Goto were not displaying their syntax correctly on the docs
site. This change adds a new way to specify an optional context, an
optional extension, and a required priority that the xml stylesheet can
parse without having to know which optional parameters come in which
order. In Asterisk, it looks like this:</p>
<pre><code>parameter name="context" documentationtype="dialplan_context"
parameter name="extension" documentationtype="dialplan_extension"
parameter name="priority" documentationtype="dialplan_priority" required="true"
</code></pre>
<p>The stylesheet will ignore the context and extension parameters, but for
priority, it will automatically inject the following:</p>
<pre><code>[[context,]extension,]priority
</code></pre>
<p>This is the correct oder for applications such as Gosub and Goto.</p>
<h4>README.md: Updates and Fixes</h4>
<p>Author: George Joseph
Date: 2025-03-05</p>
<ul>
<li>Outdated information has been removed.</li>
<li>New links added.</li>
<li>Placeholder added for link to change logs.</li>
</ul>
<p>Going forward, the release process will create HTML versions of the README
and change log and will update the link in the README to the current
change log for the branch...</p>
<ul>
<li>In the development branches, the link will always point to the current
release on GitHub.</li>
<li>In the "releases/*" branches and the tarballs, the link will point to the
ChangeLogs/ChangeLog-<version>.html file in the source directory.</li>
<li>On the downloads website, the link will point to the
ChangeLog-<version>.html file in the same directory.</li>
</ul>
<p>Resolves: #1131</p>
<h4>README.md: Removed outdated link</h4>
<p>Author: Shyju Kanaprath
Date: 2024-02-23</p>
<p>Removed outdated link http://www.quicknet.net from README.md</p>
<p>cherry-pick-to: 18
cherry-pick-to: 20
cherry-pick-to: 21</p>
<h4>general: Fix broken links.</h4>
<p>Author: Naveen Albert
Date: 2023-11-09</p>
<p>This fixes a number of broken links throughout the
tree, mostly caused by wiki.asterisk.org being replaced
with docs.asterisk.org, which should eliminate the
need for sporadic fixes as in f28047db36a70e81fe373a3d19132c43adf3f74b.</p>
<p>Resolves: #430</p>
<h4>documentation: Add information on running install_prereq script in readme</h4>
<p>Author: Marcel Wagner
Date: 2022-03-23</p>
<p>Adding information in the readme about running the install_preqreq script to install components that the ./configure script might indicate as missing.</p>
<p>ASTERISK-29976 #close</p>
<h4>LICENSE: Update company name, email, and address.</h4>
<p>Author: Joshua C. Colp
Date: 2025-01-21</p>
<h4>README.md, asterisk.c: Update Copyright Dates</h4>
<p>Author: George Joseph
Date: 2025-01-20</p>
<h4>manager.c: Rename restrictedFile to is_restricted_file.</h4>
<p>Author: Sean Bright
Date: 2025-01-09</p>
<p>Also correct the spelling of 'privileges.'</p>
<h4>gcc14: Fix issues caught by gcc 14</h4>
<p>Author: George Joseph
Date: 2025-01-03</p>
<ul>
<li>reqresp_parser.c: Fix misuse of "static" with linked list definitions</li>
<li>test_message.c: Fix segfaults caused by passing NULL as an sprintf fmt</li>
</ul>
<h4>res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T</h4>
<p>Author: George Joseph
Date: 2024-11-15</p>
<p>The suppress_moh_on_sendonly endpoint option should have been
defined as OPT_BOOL_T in pjsip_configuration.c and AST_BOOL_VALUES
in the alembic script instead of OPT_YESNO_T and YESNO_VALUES.</p>
<p>Also updated contrib/ast-db-manage/README.md to indicate that
AST_BOOL_VALUES should always be used and provided an example.</p>
<p>Resolves: #995</p>
<h4>res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"</h4>
<p>Author: George Joseph
Date: 2024-11-05</p>
<p>Normally, when one party in a call sends Asterisk an SDP with
a "sendonly" or "inactive" attribute it means "hold" and causes
Asterisk to start playing MOH back to the other party. This can be
problematic if it happens at certain times, such as in a 183
Progress message, because the MOH will replace any early media you
may be playing to the calling party. If you set this option
to "yes" on an endpoint and the endpoint receives an SDP
with "sendonly" or "inactive", Asterisk will NOT play MOH back to
the other party.</p>
<p>Resolves: #979</p>
<p>UserNote: The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.</p>
<h4>res_pjsip: Move tenantid to end of ast_sip_endpoint</h4>
<p>Author: George Joseph
Date: 2024-11-06</p>
<p>The tenantid field was originally added to the ast_sip_endpoint
structure at the end of the AST_DECLARE_STRING_FIELDS block. This
caused everything after it in the structure to move down in memory
and break ABI compatibility. It's now at the end of the structure
as an AST_STRING_FIELD_EXTENDED. Given the number of string fields
in the structure now, the initial string field allocation was
also increased from 64 to 128 bytes.</p>
<p>Resolves: #982</p>
<h4>app_mixmonitor: Add 'D' option for dual-channel audio.</h4>
<p>Author: Ben Ford
Date: 2024-10-28</p>
<p>Adds the 'D' option to app_mixmonitor that interleaves the input and
output frames of the channel being recorded in the monitor output frame.
This allows for two streams in the recording: the transmitted audio and
the received audio. The 't' and 'r' options are compatible with this.</p>
<p>Fixes: #945</p>
<p>UserNote: The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.</p>
<h4>core_unreal.c: Fix memory leak in ast_unreal_new_channels()</h4>
<p>Author: George Joseph
Date: 2024-10-15</p>
<p>When the channel tech is multistream capable, the reference to
chan_topology was passed to the new channel. When the channel tech
isn't multistream capable, the reference to chan_topology was never
released. "Local" channels are multistream capable so it didn't
affect them but the confbridge "CBAnn" and the bridge_media
"Recorder" channels are not so they caused a leak every time one
of them was created.</p>
<p>Also added tracing to ast_stream_topology_alloc() and
stream_topology_destroy() to assist with debugging.</p>
<p>Resolves: #938</p>
<h4>geolocation.sample.conf: Fix comment marker at end of file</h4>
<p>Author: George Joseph
Date: 2024-10-08</p>
<p>Resolves: #937</p>
<h4>manager.c: Add unit test for Originate app and appdata permissions</h4>
<p>Author: George Joseph
Date: 2024-10-03</p>
<p>This unit test checks that dialplan apps and app data specified
as parameters for the Originate action are allowed with the
permissions the user has.</p>
<h4>alembic: Drop redundant voicemail_messages index.</h4>
<p>Author: Sean Bright
Date: 2024-09-26</p>
<p>The <code>voicemail_messages_dir</code> index is a left prefix of the table's
primary key and therefore unnecessary.</p>
<h4>app_voicemail: add NoOp alembic script to maintain sync</h4>
<p>Author: Mike Bradeen
Date: 2024-01-17</p>
<p>Adding a NoOp alembic script for the voicemail database to maintain
version sync with other branches.</p>
<p>Fixes: #527</p>
<h4>res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery</h4>
<p>Author: Sean Bright
Date: 2024-09-23</p>
<p>Fixes #895</p>
<h4>Fix application references to Background</h4>
<p>Author: George Joseph
Date: 2024-09-20</p>
<p>The app is actually named "BackGround" but several references
in XML documentation were spelled "Background" with the lower
case "g". This was causing documentation links to return
"not found" messages.</p>
</body></html>

View File

@@ -1,433 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert15
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert15.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert14...certified-18.9-cert15)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert15.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 25
- Commit Authors: 8
- Issues Resolved: 10
- Security Advisories Resolved: 0
### User Notes:
- #### res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.
- #### app_mixmonitor: Add 'D' option for dual-channel audio.
The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.
### Upgrade Notes:
### Commit Authors:
- Ben Ford: (2)
- George Joseph: (12)
- Joshua C. Colp: (1)
- Marcel Wagner: (1)
- Mike Bradeen: (1)
- Naveen Albert: (1)
- Sean Bright: (6)
- Shyju Kanaprath: (1)
## Issue and Commit Detail:
### Closed Issues:
- 430: [bug]: Fix broken links
- 527: [bug]: app_voicemail_odbc no longer working after removal of macrocontext.
- 937: [bug]: Wrong format for sample config file 'geolocation.conf.sample'
- 938: [bug]: memory leak - CBAnn leaks a small amount format_cap related memory for every confbridge
- 945: [improvement]: Add stereo recording support for app_mixmonitor
- 979: [improvement]: Add ability to suppress MOH when a remote endpoint sends "sendonly" or "inactive"
- 982: [bug]: The addition of tenantid to the ast_sip_endpoint structure broke ABI compatibility
- 995: [bug]: suppress_moh_on_sendonly should use AST_BOOL_VALUES instead of YESNO_VALUES in alembic script
- 1131: [bug]: CHANGES link broken in README.md
- ASTERISK-29976: Should Readme include information about install_prereq script?
### Commits By Author:
- #### Ben Ford (2):
- app_mixmonitor: Add 'D' option for dual-channel audio.
- documentation: Update Gosub, Goto, and add new documentationtype.
- #### George Joseph (12):
- Fix application references to Background
- manager.c: Add unit test for Originate app and appdata permissions
- geolocation.sample.conf: Fix comment marker at end of file
- core_unreal.c: Fix memory leak in ast_unreal_new_channels()
- res_pjsip: Move tenantid to end of ast_sip_endpoint
- res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
- res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
- gcc14: Fix issues caught by gcc 14
- README.md, asterisk.c: Update Copyright Dates
- README.md: Updates and Fixes
- build_tools: Backport from 18
- res_pjsip: Backport pjsip uri utilities.
- #### Joshua C. Colp (1):
- LICENSE: Update company name, email, and address.
- #### Marcel Wagner (1):
- documentation: Add information on running install_prereq script in readme
- #### Mike Bradeen (1):
- app_voicemail: add NoOp alembic script to maintain sync
- #### Naveen Albert (1):
- general: Fix broken links.
- #### Sean Bright (6):
- res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
- alembic: Drop redundant voicemail_messages index.
- manager.c: Rename restrictedFile to is_restricted_file.
- xml.c: Update deprecated libxml2 API usage.
- chan_dahdi.c: Resolve a format-truncation build warning.
- chan_sip.c: Fix __sip_reliable_xmit build error
- #### Shyju Kanaprath (1):
- README.md: Removed outdated link
### Commit List:
- res_pjsip: Backport pjsip uri utilities.
- build_tools: Backport from 18
- chan_sip.c: Fix __sip_reliable_xmit build error
- chan_dahdi.c: Resolve a format-truncation build warning.
- xml.c: Update deprecated libxml2 API usage.
- documentation: Update Gosub, Goto, and add new documentationtype.
- README.md: Updates and Fixes
- README.md: Removed outdated link
- general: Fix broken links.
- documentation: Add information on running install_prereq script in readme
- LICENSE: Update company name, email, and address.
- README.md, asterisk.c: Update Copyright Dates
- manager.c: Rename restrictedFile to is_restricted_file.
- gcc14: Fix issues caught by gcc 14
- res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
- res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
- res_pjsip: Move tenantid to end of ast_sip_endpoint
- app_mixmonitor: Add 'D' option for dual-channel audio.
- core_unreal.c: Fix memory leak in ast_unreal_new_channels()
- geolocation.sample.conf: Fix comment marker at end of file
- manager.c: Add unit test for Originate app and appdata permissions
- alembic: Drop redundant voicemail_messages index.
- app_voicemail: add NoOp alembic script to maintain sync
- res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
- Fix application references to Background
### Commit Details:
#### res_pjsip: Backport pjsip uri utilities.
Author: George Joseph
Date: 2025-03-25
The following utilities have been backported:
ast_sip_is_uri_sip_sips
ast_sip_is_allowed_uri
ast_sip_pjsip_uri_get_username
ast_sip_pjsip_uri_get_hostname
ast_sip_pjsip_uri_get_other_param
They were originally included in the commit for supporting TEL uris.
Support for TEL uris is NOT included here however.
#### build_tools: Backport from 18
Author: George Joseph
Date: 2025-03-25
There are several build fixes that never made it into certified/18.9.
Unfortunately the commits that contained the fixes also contained other
stuff that won't cherry-pick into cert so the build files had to be
just copied from 18.
#### chan_sip.c: Fix __sip_reliable_xmit build error
Author: Sean Bright
Date: 2024-10-17
Fixes #954
#### chan_dahdi.c: Resolve a format-truncation build warning.
Author: Sean Bright
Date: 2022-08-19
With gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0:
> chan_dahdi.c:4129:18: error: %s directive output may be truncated
> writing up to 255 bytes into a region of size between 242 and 252
> [-Werror=format-truncation=]
This removes the error-prone sizeof(...) calculations in favor of just
doubling the size of the base buffer.
#### xml.c: Update deprecated libxml2 API usage.
Author: Sean Bright
Date: 2024-05-23
Two functions are deprecated as of libxml2 2.12:
* xmlSubstituteEntitiesDefault
* xmlParseMemory
So we update those with supported API.
Additionally, `res_calendar_caldav` has been updated to use libxml2's
xmlreader API instead of the SAX2 API which has always felt a little
hacky (see deleted comment block in `res_calendar_caldav.c`).
The xmlreader API has been around since libxml2 2.5.0 which was
released in 2003.
Fixes #725
#### documentation: Update Gosub, Goto, and add new documentationtype.
Author: Ben Ford
Date: 2025-03-14
Gosub and Goto were not displaying their syntax correctly on the docs
site. This change adds a new way to specify an optional context, an
optional extension, and a required priority that the xml stylesheet can
parse without having to know which optional parameters come in which
order. In Asterisk, it looks like this:
parameter name="context" documentationtype="dialplan_context"
parameter name="extension" documentationtype="dialplan_extension"
parameter name="priority" documentationtype="dialplan_priority" required="true"
The stylesheet will ignore the context and extension parameters, but for
priority, it will automatically inject the following:
[[context,]extension,]priority
This is the correct oder for applications such as Gosub and Goto.
#### README.md: Updates and Fixes
Author: George Joseph
Date: 2025-03-05
* Outdated information has been removed.
* New links added.
* Placeholder added for link to change logs.
Going forward, the release process will create HTML versions of the README
and change log and will update the link in the README to the current
change log for the branch...
* In the development branches, the link will always point to the current
release on GitHub.
* In the "releases/*" branches and the tarballs, the link will point to the
ChangeLogs/ChangeLog-<version>.html file in the source directory.
* On the downloads website, the link will point to the
ChangeLog-<version>.html file in the same directory.
Resolves: #1131
#### README.md: Removed outdated link
Author: Shyju Kanaprath
Date: 2024-02-23
Removed outdated link http://www.quicknet.net from README.md
cherry-pick-to: 18
cherry-pick-to: 20
cherry-pick-to: 21
#### general: Fix broken links.
Author: Naveen Albert
Date: 2023-11-09
This fixes a number of broken links throughout the
tree, mostly caused by wiki.asterisk.org being replaced
with docs.asterisk.org, which should eliminate the
need for sporadic fixes as in f28047db36a70e81fe373a3d19132c43adf3f74b.
Resolves: #430
#### documentation: Add information on running install_prereq script in readme
Author: Marcel Wagner
Date: 2022-03-23
Adding information in the readme about running the install_preqreq script to install components that the ./configure script might indicate as missing.
ASTERISK-29976 #close
#### LICENSE: Update company name, email, and address.
Author: Joshua C. Colp
Date: 2025-01-21
#### README.md, asterisk.c: Update Copyright Dates
Author: George Joseph
Date: 2025-01-20
#### manager.c: Rename restrictedFile to is_restricted_file.
Author: Sean Bright
Date: 2025-01-09
Also correct the spelling of 'privileges.'
#### gcc14: Fix issues caught by gcc 14
Author: George Joseph
Date: 2025-01-03
* reqresp_parser.c: Fix misuse of "static" with linked list definitions
* test_message.c: Fix segfaults caused by passing NULL as an sprintf fmt
#### res_pjsip: Change suppress_moh_on_sendonly to OPT_BOOL_T
Author: George Joseph
Date: 2024-11-15
The suppress_moh_on_sendonly endpoint option should have been
defined as OPT_BOOL_T in pjsip_configuration.c and AST_BOOL_VALUES
in the alembic script instead of OPT_YESNO_T and YESNO_VALUES.
Also updated contrib/ast-db-manage/README.md to indicate that
AST_BOOL_VALUES should always be used and provided an example.
Resolves: #995
#### res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
Author: George Joseph
Date: 2024-11-05
Normally, when one party in a call sends Asterisk an SDP with
a "sendonly" or "inactive" attribute it means "hold" and causes
Asterisk to start playing MOH back to the other party. This can be
problematic if it happens at certain times, such as in a 183
Progress message, because the MOH will replace any early media you
may be playing to the calling party. If you set this option
to "yes" on an endpoint and the endpoint receives an SDP
with "sendonly" or "inactive", Asterisk will NOT play MOH back to
the other party.
Resolves: #979
UserNote: The new "suppress_moh_on_sendonly" endpoint option
can be used to prevent playing MOH back to a caller if the remote
end sends "sendonly" or "inactive" (hold) to Asterisk in an SDP.
#### res_pjsip: Move tenantid to end of ast_sip_endpoint
Author: George Joseph
Date: 2024-11-06
The tenantid field was originally added to the ast_sip_endpoint
structure at the end of the AST_DECLARE_STRING_FIELDS block. This
caused everything after it in the structure to move down in memory
and break ABI compatibility. It's now at the end of the structure
as an AST_STRING_FIELD_EXTENDED. Given the number of string fields
in the structure now, the initial string field allocation was
also increased from 64 to 128 bytes.
Resolves: #982
#### app_mixmonitor: Add 'D' option for dual-channel audio.
Author: Ben Ford
Date: 2024-10-28
Adds the 'D' option to app_mixmonitor that interleaves the input and
output frames of the channel being recorded in the monitor output frame.
This allows for two streams in the recording: the transmitted audio and
the received audio. The 't' and 'r' options are compatible with this.
Fixes: #945
UserNote: The MixMonitor application now has a new 'D' option which
interleaves the recorded audio in the output frames. This allows for
stereo recording output with one channel being the transmitted audio and
the other being the received audio. The 't' and 't' options are
compatible with this.
#### core_unreal.c: Fix memory leak in ast_unreal_new_channels()
Author: George Joseph
Date: 2024-10-15
When the channel tech is multistream capable, the reference to
chan_topology was passed to the new channel. When the channel tech
isn't multistream capable, the reference to chan_topology was never
released. "Local" channels are multistream capable so it didn't
affect them but the confbridge "CBAnn" and the bridge_media
"Recorder" channels are not so they caused a leak every time one
of them was created.
Also added tracing to ast_stream_topology_alloc() and
stream_topology_destroy() to assist with debugging.
Resolves: #938
#### geolocation.sample.conf: Fix comment marker at end of file
Author: George Joseph
Date: 2024-10-08
Resolves: #937
#### manager.c: Add unit test for Originate app and appdata permissions
Author: George Joseph
Date: 2024-10-03
This unit test checks that dialplan apps and app data specified
as parameters for the Originate action are allowed with the
permissions the user has.
#### alembic: Drop redundant voicemail_messages index.
Author: Sean Bright
Date: 2024-09-26
The `voicemail_messages_dir` index is a left prefix of the table's
primary key and therefore unnecessary.
#### app_voicemail: add NoOp alembic script to maintain sync
Author: Mike Bradeen
Date: 2024-01-17
Adding a NoOp alembic script for the voicemail database to maintain
version sync with other branches.
Fixes: #527
#### res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
Author: Sean Bright
Date: 2024-09-23
Fixes #895
#### Fix application references to Background
Author: George Joseph
Date: 2024-09-20
The app is actually named "BackGround" but several references
in XML documentation were spelled "Background" with the lower
case "g". This was causing documentation links to return
"not found" messages.

View File

@@ -1,62 +0,0 @@
<html><head><title>ChangeLog for asterisk-certified-18.9-cert16</title></head><body>
<h2>Change Log for Release asterisk-certified-18.9-cert16</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert16.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/certified-18.9-cert15...certified-18.9-cert16">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert16.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: 1</li>
<li>Commit Authors: 1</li>
<li>Issues Resolved: 0</li>
<li>Security Advisories Resolved: 1</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-v9q8-9j8m-5xwp">GHSA-v9q8-9j8m-5xwp</a>: Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.</li>
</ul>
<h3>User Notes:</h3>
<h3>Upgrade Notes:</h3>
<ul>
<li>
<h4>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</h4>
The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.</li>
</ul>
<h3>Developer Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>ThatTotallyRealMyth: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-v9q8-9j8m-5xwp: Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>ThatTotallyRealMyth (1):</h4>
</li>
<li>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</li>
</ul>
<h3>Commit Details:</h3>
<h4>safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.</h4>
<p>Author: ThatTotallyRealMyth
Date: 2025-06-10</p>
<p>UpgradeNote: The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.</p>
<p>Resolves: #GHSA-v9q8-9j8m-5xwp</p>
</body></html>

View File

@@ -1,70 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert16
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert16.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert15...certified-18.9-cert16)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert16.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-v9q8-9j8m-5xwp](https://github.com/asterisk/asterisk/security/advisories/GHSA-v9q8-9j8m-5xwp): Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.
### User Notes:
### Upgrade Notes:
- #### safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.
### Developer Notes:
### Commit Authors:
- ThatTotallyRealMyth: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-v9q8-9j8m-5xwp: Uncontrolled Search-Path Element in safe_asterisk script may allow local privilege escalation.
### Commits By Author:
- #### ThatTotallyRealMyth (1):
- safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
### Commit List:
- safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
### Commit Details:
#### safe_asterisk: Add ownership checks for /etc/asterisk/startup.d and its files.
Author: ThatTotallyRealMyth
Date: 2025-06-10
UpgradeNote: The safe_asterisk script now checks that, if it was run by the
root user, the /etc/asterisk/startup.d directory and all the files it contains
are owned by root. If the checks fail, safe_asterisk will exit with an error
and Asterisk will not be started. Additionally, the default logging
destination is now stderr instead of tty "9" which probably won't exist
in modern systems.
Resolves: #GHSA-v9q8-9j8m-5xwp

View File

@@ -1,48 +0,0 @@
<html><head><title>ChangeLog for asterisk-certified-18.9-cert17</title></head><body>
<h2>Change Log for Release asterisk-certified-18.9-cert17</h2>
<h3>Links:</h3>
<ul>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert17.html">Full ChangeLog</a> </li>
<li><a href="https://github.com/asterisk/asterisk/compare/certified-18.9-cert16...certified-18.9-cert17">GitHub Diff</a> </li>
<li><a href="https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert17.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: 1</li>
<li>Commit Authors: 1</li>
<li>Issues Resolved: 0</li>
<li>Security Advisories Resolved: 1</li>
<li><a href="https://github.com/asterisk/asterisk/security/advisories/GHSA-557q-795j-wfx2">GHSA-557q-795j-wfx2</a>: Resource exhaustion (DoS) vulnerability: remotely exploitable leak of RTP UDP ports and internal resources</li>
</ul>
<h3>User Notes:</h3>
<h3>Upgrade Notes:</h3>
<h3>Developer Notes:</h3>
<h3>Commit Authors:</h3>
<ul>
<li>George Joseph: (1)</li>
</ul>
<h2>Issue and Commit Detail:</h2>
<h3>Closed Issues:</h3>
<ul>
<li>!GHSA-557q-795j-wfx2: Resource exhaustion (DoS) vulnerability: remotely exploitable leak of RTP UDP ports and internal resources</li>
</ul>
<h3>Commits By Author:</h3>
<ul>
<li>
<h4>George Joseph (1):</h4>
</li>
<li>pjproject: Update bundled to 2.15.1.</li>
</ul>
<h3>Commit List:</h3>
<ul>
<li>pjproject: Update bundled to 2.15.1.</li>
</ul>
<h3>Commit Details:</h3>
<h4>pjproject: Update bundled to 2.15.1.</h4>
<p>Author: George Joseph
Date: 2025-08-25</p>
<p>This resolves a security issue where RTP ports weren't being released
causing possible resource exhaustion issues.</p>
<p>Resolves: #GHSA-557q-795j-wfx2</p>
</body></html>

View File

@@ -1,58 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert17
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert17.html)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert16...certified-18.9-cert17)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert17.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 1
- Commit Authors: 1
- Issues Resolved: 0
- Security Advisories Resolved: 1
- [GHSA-557q-795j-wfx2](https://github.com/asterisk/asterisk/security/advisories/GHSA-557q-795j-wfx2): Resource exhaustion (DoS) vulnerability: remotely exploitable leak of RTP UDP ports and internal resources
### User Notes:
### Upgrade Notes:
### Developer Notes:
### Commit Authors:
- George Joseph: (1)
## Issue and Commit Detail:
### Closed Issues:
- !GHSA-557q-795j-wfx2: Resource exhaustion (DoS) vulnerability: remotely exploitable leak of RTP UDP ports and internal resources
### Commits By Author:
- #### George Joseph (1):
- pjproject: Update bundled to 2.15.1.
### Commit List:
- pjproject: Update bundled to 2.15.1.
### Commit Details:
#### pjproject: Update bundled to 2.15.1.
Author: George Joseph
Date: 2025-08-25
This resolves a security issue where RTP ports weren't being released
causing possible resource exhaustion issues.
Resolves: #GHSA-557q-795j-wfx2

View File

@@ -1,680 +0,0 @@
Change Log for Release certified-18.9-cert5
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-certified-18.9-cert5.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert4...certified-18.9-cert5)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-certified-18.9-cert5.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- apply_patches: Use globbing instead of file/sort.
- apply_patches: Sort patch list before applying
- bundled_pjproject: Backport security fixes from pjproject 2.13.1
- .github: Updates for AsteriskReleaser
- res_musiconhold: avoid moh state access on unlocked chan
- utils: add lock timestamps for DEBUG_THREADS
- .github: Back out triggering PROpenedOrUpdated by label
- .github: Move publish docs to new file CreateDocs.yml
- .github: Remove result check from PROpenUpdateGateTests
- .github: Fix use of 'contains'
- .github: Add recheck label test to additional jobs
- .github: Fix recheck label typos
- .github: Fix recheck label manipulation
- .github: Allow PR submit checks to be re-run by label
- res_pjsip_session: Added new function calls to avoid ABI issues.
- test_statis_endpoints: Fix channel_messages test again
- test_stasis_endpoints.c: Make channel_messages more stable
- build: Fix a few gcc 13 issues
- .github: Rework for merge approval
- AMI: Add CoreShowChannelMap action.
- .github: Fix issues with cherry-pick-reminder
- indications: logging changes
- .github Ignore error when adding reviewrs to PR
- .github: Update field descriptions for AsteriskReleaser
- .github: Change title of AsteriskReleaser job
- .github: Don't add cherry-pick reminder if it's already present
- .github: Fix quoting in PROpenedOrUpdated
- .github: Add cherry-pick reminder to new PRs
- core: Cleanup gerrit and JIRA references. (#40) (#61)
- .github: Tweak improvement issue type language.
- .github: Tweak new feature language, and move feature requests elsewhere.
- .github: Fix staleness check to only run on certain labels.
- .github: Add AsteriskReleaser
- cel: add local optimization begin event
- .github: Fix CherryPickTest to only run when it should
- .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
- .github: Remove separate set labels step from new PR
- .github: Refactor CP progress and add new PR test progress
- .github: Add cherry-pick test progress labels
- .github: Update issue templates
- .github: Remove unnecessary parameter in CherryPickTest
- Initial GitHub PRs
- Initial GitHub Issue Templates
- test.c: Fix counting of tests and add 2 new tests
- res_mixmonitor: MixMonitorMute by MixMonitor ID
- format_sln: add .slin as supported file extension
- bridge_builtin_features: add beep via touch variable
- cli: increase channel column width
- app_senddtmf: Add option to answer target channel.
- app_directory: Add a 'skip call' option.
- app_read: Add an option to return terminator on empty digits.
- app_directory: add ability to specify configuration file
User Notes:
----------------------------------------
- ### AMI: Add CoreShowChannelMap action.
New AMI action CoreShowChannelMap has been added.
- ### cel: add local optimization begin event
The new AST_CEL_LOCAL_OPTIMIZE_BEGIN can be used
by itself or in conert with the existing
AST_CEL_LOCAL_OPTIMIZE to book-end local channel optimizaion.
- ### app_read: Add an option to return terminator on empty digits.
A new option 'e' has been added to allow Read() to return the
terminator as the dialed digits in the case where only the terminator
is entered.
- ### format_sln: add .slin as supported file extension
format_sln now recognizes '.slin' as a valid
file extension in addition to the existing
'.sln' and '.raw'.
- ### bridge_builtin_features: add beep via touch variable
Add optional touch variable : TOUCH_MIXMONITOR_BEEP(interval)
Setting TOUCH_MIXMONITOR_BEEP/TOUCH_MONITOR_BEEP to a valid
interval in seconds will result in a periodic beep being
played to the monitored channel upon MixMontior/Monitor
feature start.
If an interval less than 5 seconds is specified, the interval
will default to 5 seconds. If the value is set to an invalid
interval, the default of 15 seconds will be used.
- ### app_directory: Add a 'skip call' option.
A new option 's' has been added to the Directory() application that
will skip calling the extension and instead set the extension as
DIRECTORY_EXTEN channel variable.
- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
It is now possible to specify the MixMonitorID when calling
the manager action: MixMonitorMute. This will allow an
individual MixMonitor instance to be muted via ID.
The MixMonitorID can be stored as a channel variable using
the 'i' MixMonitor option and is returned upon creation if
this option is used.
As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor audiohooks on the channel. Previous
behavior would set the flag on the first MixMonitor audiohook
found.
- ### app_senddtmf: Add option to answer target channel.
A new option has been added to SendDTMF() which will answer the
specified channel if it is not already up. If no channel is specified,
the current channel will be answered instead.
- ### test.c: Fix counting of tests and add 2 new tests
The "tests" attribute of the "testsuite" element in the
output XML now reflects only the tests actually requested
to be executed instead of all the tests registered.
The "failures" attribute was added to the "testsuite"
element.
Also added two new unit tests that just pass and fail
to be used for testing CI itself.
- ### cli: increase channel column width
This change increases the display width on 'core show channels'
amd 'core show channels verbose'
For 'core show channels', the Channel name field is increased to
64 characters and the Location name field is increased to 32
characters.
For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.
Upgrade Notes:
----------------------------------------
- ### cel: add local optimization begin event
The existing AST_CEL_LOCAL_OPTIMIZE can continue
to be used as-is and the AST_CEL_LOCAL_OPTIMIZE_BEGIN event
can be ignored if desired.
Closed Issues:
----------------------------------------
- #39: [Bug]: Remove .gitreview from repository.
- #52: [improvement]: Add local optimization begin cel event
- #89: [improvement]: indications: logging changes
- #104: [improvement]: Add AMI action to get a list of connected channels
- #110: [improvement]: utils - add lock timing information with DEBUG_THREADS
- #133: [bug]: unlock channel after moh state access
- #145: [bug]: ABI issue with pjproject and pjsip_inv_session
- #155: [bug]: GCC 13 is catching a few new trivial issues
- #158: [bug]: test_stasis_endpoints.c: Unit test channel_messages is unstable
- #188: [improvement]: pjsip: Upgrade bundled version to pjproject 2.13.1 #187
- #193: [bug]: third-party/apply-patches doesn't sort the patch file list before applying
Commits By Author:
----------------------------------------
- ### Ben Ford (2):
- AMI: Add CoreShowChannelMap action.
- res_pjsip_session: Added new function calls to avoid ABI issues.
- ### George Joseph (33):
- test.c: Fix counting of tests and add 2 new tests
- Initial GitHub Issue Templates
- Initial GitHub PRs
- .github: Remove unnecessary parameter in CherryPickTest
- .github: Update issue templates
- .github: Add cherry-pick test progress labels
- .github: Refactor CP progress and add new PR test progress
- .github: Remove separate set labels step from new PR
- .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
- .github: Fix CherryPickTest to only run when it should
- .github: Add AsteriskReleaser
- .github: Add cherry-pick reminder to new PRs
- .github: Fix quoting in PROpenedOrUpdated
- .github: Don't add cherry-pick reminder if it's already present
- .github: Change title of AsteriskReleaser job
- .github: Update field descriptions for AsteriskReleaser
- .github Ignore error when adding reviewrs to PR
- .github: Fix issues with cherry-pick-reminder
- .github: Rework for merge approval
- build: Fix a few gcc 13 issues
- test_stasis_endpoints.c: Make channel_messages more stable
- test_statis_endpoints: Fix channel_messages test again
- .github: Allow PR submit checks to be re-run by label
- .github: Fix recheck label manipulation
- .github: Fix recheck label typos
- .github: Add recheck label test to additional jobs
- .github: Fix use of 'contains'
- .github: Remove result check from PROpenUpdateGateTests
- .github: Move publish docs to new file CreateDocs.yml
- .github: Back out triggering PROpenedOrUpdated by label
- .github: Updates for AsteriskReleaser
- bundled_pjproject: Backport security fixes from pjproject 2.13.1
- apply_patches: Sort patch list before applying
- ### Gitea (1):
- .github: Tweak new feature language, and move feature requests elsewhere.
- ### Joshua C. Colp (2):
- .github: Fix staleness check to only run on certain labels.
- .github: Tweak improvement issue type language.
- ### Mike Bradeen (12):
- app_directory: add ability to specify configuration file
- app_read: Add an option to return terminator on empty digits.
- app_directory: Add a 'skip call' option.
- app_senddtmf: Add option to answer target channel.
- cli: increase channel column width
- bridge_builtin_features: add beep via touch variable
- format_sln: add .slin as supported file extension
- res_mixmonitor: MixMonitorMute by MixMonitor ID
- cel: add local optimization begin event
- indications: logging changes
- utils: add lock timestamps for DEBUG_THREADS
- res_musiconhold: avoid moh state access on unlocked chan
- ### Sean Bright (2):
- core: Cleanup gerrit and JIRA references. (#40) (#61)
- apply_patches: Use globbing instead of file/sort.
Detail:
----------------------------------------
- ### apply_patches: Use globbing instead of file/sort.
Author: Sean Bright
Date: 2023-07-06
This accomplishes the same thing as a `find ... | sort` but with the
added benefit of clarity and avoiding a call to a subshell.
Additionally drop the -s option from call to patch as it is not POSIX.
- ### apply_patches: Sort patch list before applying
Author: George Joseph
Date: 2023-07-06
The apply_patches script wasn't sorting the list of patches in
the "patches" directory before applying them. This left the list
in an indeterminate order. In most cases, the list is actually
sorted but rarely, they can be out of order and cause dependent
patches to fail to apply.
We now sort the list but the "sort" program wasn't in the
configure scripts so we needed to add that and regenerate
the scripts as well.
Resolves: #193
- ### bundled_pjproject: Backport security fixes from pjproject 2.13.1
Author: George Joseph
Date: 2023-07-05
Merge-pull-request-from-GHSA-9pfh-r8x4-w26w.patch
Merge-pull-request-from-GHSA-cxwq-5g9x-x7fr.patch
Locking-fix-so-that-SSL_shutdown-and-SSL_write-are-n.patch
Don-t-call-SSL_shutdown-when-receiving-SSL_ERROR_SYS.patch
Resolves: #188
- ### .github: Updates for AsteriskReleaser
Author: George Joseph
Date: 2023-06-30
- ### res_musiconhold: avoid moh state access on unlocked chan
Author: Mike Bradeen
Date: 2023-05-31
Move channel unlock to after moh state access to avoid
potential unlocked access to state.
Resolves: #133
- ### utils: add lock timestamps for DEBUG_THREADS
Author: Mike Bradeen
Date: 2023-05-23
Adds last locked and unlocked timestamps as well as a
counter for the number of times the lock has been
attempted (vs locked/unlocked) to debug output printed
using the DEBUG_THREADS option.
Resolves: #110
- ### .github: Back out triggering PROpenedOrUpdated by label
Author: George Joseph
Date: 2023-06-29
- ### .github: Move publish docs to new file CreateDocs.yml
Author: George Joseph
Date: 2023-06-27
- ### .github: Remove result check from PROpenUpdateGateTests
Author: George Joseph
Date: 2023-06-27
- ### .github: Fix use of 'contains'
Author: George Joseph
Date: 2023-06-26
- ### .github: Add recheck label test to additional jobs
Author: George Joseph
Date: 2023-06-26
- ### .github: Fix recheck label typos
Author: George Joseph
Date: 2023-06-26
- ### .github: Fix recheck label manipulation
Author: George Joseph
Date: 2023-06-26
- ### .github: Allow PR submit checks to be re-run by label
Author: George Joseph
Date: 2023-06-26
- ### res_pjsip_session: Added new function calls to avoid ABI issues.
Author: Ben Ford
Date: 2023-06-05
Added two new functions (ast_sip_session_get_dialog and
ast_sip_session_get_pjsip_inv_state) that retrieve the dialog and the
pjsip_inv_state respectively from the pjsip_inv_session on the
ast_sip_session struct. This is due to pjproject adding a new field to
the pjsip_inv_session struct that caused crashes when trying to access
fields that were no longer where they were expected to be if a module
was compiled against a different version of pjproject.
Resolves: #145
- ### test_statis_endpoints: Fix channel_messages test again
Author: George Joseph
Date: 2023-06-12
- ### test_stasis_endpoints.c: Make channel_messages more stable
Author: George Joseph
Date: 2023-06-09
The channel_messages test was assuming that stasis would return
messages in a specific order. This is an incorrect assumption as
message ordering was never guaranteed. This was causing the test
to fail occasionally. We now test all the messages for the
required message types instead of testing one by one.
Resolves: #158
- ### build: Fix a few gcc 13 issues
Author: George Joseph
Date: 2023-06-09
* gcc 13 is now catching when a function is declared as returning
an enum but defined as returning an int or vice versa. Fixed
a few in app.h, loader.c, stasis_message.c.
* gcc 13 is also now (incorrectly) complaining of dangling pointers
when assigning a pointer to a local char array to a char *. Had
to change that to an ast_alloca.
Resolves: #155
- ### .github: Rework for merge approval
Author: George Joseph
Date: 2023-06-06
- ### AMI: Add CoreShowChannelMap action.
Author: Ben Ford
Date: 2023-05-18
Adds a new AMI action (CoreShowChannelMap) that takes in a channel name
and provides a list of all channels that are connected to that channel,
following local channel connections as well.
Resolves: #104
UserNote: New AMI action CoreShowChannelMap has been added.
- ### .github: Fix issues with cherry-pick-reminder
Author: George Joseph
Date: 2023-06-05
- ### indications: logging changes
Author: Mike Bradeen
Date: 2023-05-16
Increase verbosity to indicate failure due to missing country
and to specify default on CLI dump
Resolves: #89
- ### .github Ignore error when adding reviewrs to PR
Author: George Joseph
Date: 2023-06-05
- ### .github: Update field descriptions for AsteriskReleaser
Author: George Joseph
Date: 2023-05-26
- ### .github: Change title of AsteriskReleaser job
Author: George Joseph
Date: 2023-05-23
- ### .github: Don't add cherry-pick reminder if it's already present
Author: George Joseph
Date: 2023-05-22
- ### .github: Fix quoting in PROpenedOrUpdated
Author: George Joseph
Date: 2023-05-16
- ### .github: Add cherry-pick reminder to new PRs
Author: George Joseph
Date: 2023-05-15
- ### core: Cleanup gerrit and JIRA references. (#40) (#61)
Author: Sean Bright
Date: 2023-05-10
* Remove .gitreview and switch to pulling the main asterisk branch
version from configure.ac instead.
* Replace references to JIRA with GitHub.
* Other minor cleanup found along the way.
Resolves: #39
- ### .github: Tweak improvement issue type language.
Author: Joshua C. Colp
Date: 2023-05-09
- ### .github: Tweak new feature language, and move feature requests elsewhere.
Author: Gitea
Date: 2023-05-09
- ### .github: Fix staleness check to only run on certain labels.
Author: Joshua C. Colp
Date: 2023-05-09
- ### .github: Add AsteriskReleaser
Author: George Joseph
Date: 2023-05-05
- ### cel: add local optimization begin event
Author: Mike Bradeen
Date: 2023-05-02
The current AST_CEL_LOCAL_OPTIMIZE event is and has been
triggered on a local optimization end to serve as a flag
indicating the event occurred. This change adds a second
AST_CEL_LOCAL_OPTIMIZE_BEGIN event for further detail.
Resolves: #52
UpgradeNote: The existing AST_CEL_LOCAL_OPTIMIZE can continue
to be used as-is and the AST_CEL_LOCAL_OPTIMIZE_BEGIN event
can be ignored if desired.
UserNote: The new AST_CEL_LOCAL_OPTIMIZE_BEGIN can be used
by itself or in conert with the existing
AST_CEL_LOCAL_OPTIMIZE to book-end local channel optimizaion.
- ### .github: Fix CherryPickTest to only run when it should
Author: George Joseph
Date: 2023-05-03
Fixed CherryPickTest so it triggers only on the
"cherry-pick-test" label instead of all labels.
- ### .github: Fix reference to CHERRY_PICK_TESTING_IN_PROGRESS
Author: George Joseph
Date: 2023-05-02
- ### .github: Remove separate set labels step from new PR
Author: George Joseph
Date: 2023-05-02
- ### .github: Refactor CP progress and add new PR test progress
Author: George Joseph
Date: 2023-05-02
- ### .github: Add cherry-pick test progress labels
Author: George Joseph
Date: 2023-05-02
- ### .github: Update issue templates
Author: George Joseph
Date: 2023-05-01
- ### .github: Remove unnecessary parameter in CherryPickTest
Author: George Joseph
Date: 2023-05-01
- ### Initial GitHub PRs
Author: George Joseph
Date: 2023-04-28
- ### Initial GitHub Issue Templates
Author: George Joseph
Date: 2023-04-28
- ### test.c: Fix counting of tests and add 2 new tests
Author: George Joseph
Date: 2023-03-28
The unit test XML output was counting all registered tests as "run"
even when only a subset were actually requested to be run and
the "failures" attribute was missing.
* The "tests" attribute of the "testsuite" element in the
output XML now reflects only the tests actually requested
to be executed instead of all the tests registered.
* The "failures" attribute was added to the "testsuite"
element.
Also added 2 new unit tests that just pass and fail to be
used for CI testing.
- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
Author: Mike Bradeen
Date: 2023-03-13
While it is possible to create multiple mixmonitor instances
on a channel, it was not previously possible to mute individual
instances.
This change includes the ability to specify the MixMonitorID
when calling the manager action: MixMonitorMute. This will
allow an individual MixMonitor instance to be muted via id.
This id can be stored as a channel variable using the 'i'
MixMonitor option.
As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor spy-type audiohooks on the channel.
This is done via the new audiohook function:
ast_audiohook_set_mute_all.
ASTERISK-30464
- ### format_sln: add .slin as supported file extension
Author: Mike Bradeen
Date: 2023-03-14
Adds '.slin' to existing supported file extensions:
.sln and .raw
ASTERISK-30465
- ### bridge_builtin_features: add beep via touch variable
Author: Mike Bradeen
Date: 2023-03-01
Add periodic beep option to one-touch recording by setting
the touch variable TOUCH_MONITOR_BEEP or
TOUCH_MIXMONITOR_BEEP to the desired interval in seconds.
If the interval is less than 5 seconds, a minimum of 5
seconds will be imposed. If the interval is set to an
invalid value, it will default to 15 seconds.
A new test event PERIODIC_HOOK_ENABLED was added to the
func_periodic_hook hook_on function to indicate when
a hook is started. This is so we can test that the touch
variable starts the hook as expected.
ASTERISK-30446
- ### cli: increase channel column width
Author: Mike Bradeen
Date: 2023-03-06
For 'core show channels', the Channel name field is increased
to 64 characters and the Location name field is increased to
32 characters.
For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.
ASTERISK-30455
- ### app_senddtmf: Add option to answer target channel.
Author: Mike Bradeen
Date: 2023-02-06
Adds a new option to SendDTMF() which will answer the specified
channel if it is not already up. If no channel is specified, the
current channel will be answered instead.
ASTERISK-30422
- ### app_directory: Add a 'skip call' option.
Author: Mike Bradeen
Date: 2023-01-27
Adds 's' option to skip calling the extension and instead set the
extension as DIRECTORY_EXTEN channel variable.
ASTERISK-30405
- ### app_read: Add an option to return terminator on empty digits.
Author: Mike Bradeen
Date: 2023-01-30
Adds 'e' option to allow Read() to return the terminator as the
dialed digits in the case where only the terminator is entered.
ie; if "#" is entered, return "#" if the 'e' option is set and ""
if it is not.
ASTERISK-30411
- ### app_directory: add ability to specify configuration file
Author: Mike Bradeen
Date: 2023-01-25
Adds option to app_directory to specify a filename from which to
read configuration instead of voicemail.conf ie;
same => n,Directory(,,c(directory.conf))
This configuration should contain a list of extensions using the
voicemail.conf format, ie;
2020=2020,Dog Dog,,,,attach=no|saycid=no|envelope=no|delete=no
ASTERISK-30404

View File

@@ -1,156 +0,0 @@
Change Log for Release asterisk-certified-18.9-cert6
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-certified-18.9-cert6.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert5...certified-18.9-cert6)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-certified-18.9-cert6.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- res_pjsip_header_funcs: Duplicate new header value, don't copy.
- res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
- manager.c: Prevent path traversal with GetConfig.
- res_pjsip: disable raw bad packet logging
User Notes:
----------------------------------------
- ### app_read: Add an option to return terminator on empty digits.
A new option 'e' has been added to allow Read() to return the
terminator as the dialed digits in the case where only the terminator
is entered.
- ### format_sln: add .slin as supported file extension
format_sln now recognizes '.slin' as a valid
file extension in addition to the existing
'.sln' and '.raw'.
- ### app_directory: Add a 'skip call' option.
A new option 's' has been added to the Directory() application that
will skip calling the extension and instead set the extension as
DIRECTORY_EXTEN channel variable.
- ### app_senddtmf: Add option to answer target channel.
A new option has been added to SendDTMF() which will answer the
specified channel if it is not already up. If no channel is specified,
the current channel will be answered instead.
- ### cli: increase channel column width
This change increases the display width on 'core show channels'
amd 'core show channels verbose'
For 'core show channels', the Channel name field is increased to
64 characters and the Location name field is increased to 32
characters.
For 'core show channels verbose', the Channel name field is
increased to 80 characters, the Context is increased to 24
characters and the Extension is increased to 24 characters.
- ### bridge_builtin_features: add beep via touch variable
Add optional touch variable : TOUCH_MIXMONITOR_BEEP(interval)
Setting TOUCH_MIXMONITOR_BEEP/TOUCH_MONITOR_BEEP to a valid
interval in seconds will result in a periodic beep being
played to the monitored channel upon MixMontior/Monitor
feature start.
If an interval less than 5 seconds is specified, the interval
will default to 5 seconds. If the value is set to an invalid
interval, the default of 15 seconds will be used.
- ### test.c: Fix counting of tests and add 2 new tests
The "tests" attribute of the "testsuite" element in the
output XML now reflects only the tests actually requested
to be executed instead of all the tests registered.
The "failures" attribute was added to the "testsuite"
element.
Also added two new unit tests that just pass and fail
to be used for testing CI itself.
- ### res_mixmonitor: MixMonitorMute by MixMonitor ID
It is now possible to specify the MixMonitorID when calling
the manager action: MixMonitorMute. This will allow an
individual MixMonitor instance to be muted via ID.
The MixMonitorID can be stored as a channel variable using
the 'i' MixMonitor option and is returned upon creation if
this option is used.
As part of this change, if no MixMonitorID is specified in
the manager action MixMonitorMute, Asterisk will set the mute
flag on all MixMonitor audiohooks on the channel. Previous
behavior would set the flag on the first MixMonitor audiohook
found.
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
None
Commits By Author:
----------------------------------------
- ### Ben Ford (1):
- manager.c: Prevent path traversal with GetConfig.
- ### George Joseph (1):
- res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
- ### Gitea (1):
- res_pjsip_header_funcs: Duplicate new header value, don't copy.
- ### Mike Bradeen (1):
- res_pjsip: disable raw bad packet logging
Detail:
----------------------------------------
- ### res_pjsip_header_funcs: Duplicate new header value, don't copy.
Author: Gitea
Date: 2023-07-10
When updating an existing header the 'update' code incorrectly
just copied the new value into the existing buffer. If the
new value exceeded the available buffer size memory outside
of the buffer would be written into, potentially causing
a crash.
This change makes it so that the 'update' now duplicates
the new header value instead of copying it into the existing
buffer.
- ### res_rtp_asterisk.c: Check DTLS packets against ICE candidate list
Author: George Joseph
Date: 2023-11-09
When ICE is in use, we can prevent a possible DOS attack by allowing
DTLS protocol messages (client hello, etc) only from sources that
are in the active remote candidates list.
Resolves: GHSA-hxj9-xwr8-w8pq
- ### manager.c: Prevent path traversal with GetConfig.
Author: Ben Ford
Date: 2023-11-13
When using AMI GetConfig, it was possible to access files outside of the
Asterisk configuration directory by using filenames with ".." and "./"
even while live_dangerously was not enabled. This change resolves the
full path and ensures we are still in the configuration directory before
attempting to access the file.
- ### res_pjsip: disable raw bad packet logging
Author: Mike Bradeen
Date: 2023-12-14
Add patch to split the log level for invalid packets received on the signaling port.
The warning regarding the packet will move to level 2 so that it can still be displayed,
while the raw packet will be at level 4.

View File

@@ -1,68 +0,0 @@
Change Log for Release asterisk-certified-18.9-cert7
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-certified-18.9-cert7.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert6...certified-18.9-cert7)
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-certified-18.9-cert7.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
----------------------------------------
- res_rtp_asterisk: Fix regression issues with DTLS client check
User Notes:
----------------------------------------
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
- #500: [bug regression]: res_rtp_asterisk doesn't build if pjproject isn't used
- #503: [bug]: The res_rtp_asterisk DTLS check against ICE candidates fails when it shouldn't
- #505: [bug]: res_pjproject: ast_sockaddr_cmp() always fails on sockaddrs created by ast_sockaddr_from_pj_sockaddr()
Commits By Author:
----------------------------------------
- ### George Joseph (1):
- res_rtp_asterisk: Fix regression issues with DTLS client check
Detail:
----------------------------------------
- ### res_rtp_asterisk: Fix regression issues with DTLS client check
Author: George Joseph
Date: 2023-12-15
* Since ICE candidates are used for the check and pjproject is
required to use ICE, res_rtp_asterisk was failing to compile
when pjproject wasn't available. The check is now wrapped
with an #ifdef HAVE_PJPROJECT.
* The rtp->ice_active_remote_candidates container was being
used to check the address on incoming packets but that
container doesn't contain peer reflexive candidates discovered
during negotiation. This was causing the check to fail
where it shouldn't. We now check against pjproject's
real_ice->rcand array which will contain those candidates.
* Also fixed a bug in ast_sockaddr_from_pj_sockaddr() where
we weren't zeroing out sin->sin_zero before returning. This
was causing ast_sockaddr_cmp() to always return false when
one of the inputs was converted from a pj_sockaddr, even
if both inputs had the same address and port.
Resolves: #500
Resolves: #503
Resolves: #505

View File

@@ -1,735 +0,0 @@
Change Log for Release asterisk-certified-18.9-cert8
========================================
Links:
----------------------------------------
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert8.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert7...certified-18.9-cert8)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert8.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
Summary:
----------------------------------------
- Rename dialplan_functions.xml to dialplan_functions_doc.xml
- openssl: Supress deprecation warnings from OpenSSL 3.0
- app_chanspy: Add 'D' option for dual-channel audio
- manager.c: Fix regression due to using wrong free function.
- doc: Remove obsolete CHANGES-staging directrory
- MergeApproved.yml: Remove unneeded concurrency
- SECURITY.md: Update with correct documentation URL
- chan_pjsip: Add PJSIPHangup dialplan app and manager action
- Remove files that are no longer updated
- res_speech: allow speech to translate input channel
- res_stasis: signal when new command is queued
- logger.h: Add ability to change the prefix on SCOPE_TRACE output
- Add libjwt to third-party
- res_pjsip: update qualify_timeout documentation with DNS note
- lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
- cel: add publish user event helper
- file.c: Add ability to search custom dir for sounds
- make_buildopts_h, et. al. Allow adding all cflags to buildopts.h
- func_periodic_hook: Add hangup step to avoid timeout
- func_periodic_hook: Don't truncate channel name
- safe_asterisk: Change directory permissions to 755
- variables: Add additional variable dialplan functions.
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix broken documentation anchors
- rest-api: Updates for new documentation site
- app_voicemail: Fix for loop declarations
- download_externals: Fix a few version related issues
- Remove .lastclean and .version from source control
- manager: Tolerate stasis messages with no channel snapshot.
- audiohook: Unlock channel in mute if no audiohooks present.
- app_queue: Add support for applying caller priority change immediately.
- app.h: Move declaration of ast_getdata_result before its first use
- doc: Remove obsolete CHANGES-staging and UPGRADE-staging
- res_geolocation: Ensure required 'location_info' is present.
- Adds manager actions to allow move/remove/forward individual messages in a par..
- app_voicemail: add CLI commands for message manipulation
- Cleanup deleted files
User Notes:
----------------------------------------
- ### app_chanspy: Add 'D' option for dual-channel audio
The ChanSpy application now accepts the 'D' option which
will interleave the spied audio within the outgoing frames. The
purpose of this is to allow the audio to be read as a Dual channel
stream with separate incoming and outgoing audio. Setting both the
'o' option and the 'D' option and results in the 'D' option being
ignored.
- ### chan_pjsip: Add PJSIPHangup dialplan app and manager action
A new dialplan app PJSIPHangup and AMI action allows you
to hang up an unanswered incoming PJSIP call with a specific SIP
response code in the 400 -> 699 range.
- ### res_speech: allow speech to translate input channel
res_speech now supports translation of an input channel
to a format supported by the speech provider, provided a translation
path is available between the source format and provider capabilites.
- ### res_stasis: signal when new command is queued
Call setup times should be significantly improved
when using ARI.
- ### lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
You no longer need to select DEBUG_THREADS to use
DETECT_DEADLOCKS. This removes a significant amount of overhead
if you just want to detect possible deadlocks vs needing full
lock tracing.
- ### file.c: Add ability to search custom dir for sounds
A new option "sounds_search_custom_dir" has been added to
asterisk.conf that allows asterisk to search
AST_DATA_DIR/sounds/custom for sounds files before searching the
standard AST_DATA_DIR/sounds/<lang> directory.
- ### make_buildopts_h, et. al. Allow adding all cflags to buildopts.h
The "Build Options" entry in the "core show settings"
CLI command has been renamed to "ABI related Build Options" and
a new entry named "All Build Options" has been added that shows
both breaking and non-breaking options.
- ### variables: Add additional variable dialplan functions.
Four new dialplan functions have been added.
GLOBAL_DELETE and DELETE have been added which allows
the deletion of global and channel variables.
GLOBAL_EXISTS and VARIABLE_EXISTS have been added
which checks whether a global or channel variable has
been set.
- ### app_queue: Add support for applying caller priority change immediately.
The 'queue priority caller' CLI command and
'QueueChangePriorityCaller' AMI action now have an 'immediate'
argument which allows the caller priority change to be reflected
immediately, causing the position of a caller to move within the
queue depending on the priorities of the other callers.
- ### Adds manager actions to allow move/remove/forward individual messages in a par..
The following manager actions have been added
VoicemailBoxSummary - Generate message list for a given mailbox
VoicemailRemove - Remove a message from a mailbox folder
VoicemailMove - Move a message from one folder to another within a mailbox
VoicemailForward - Copy a message from one folder in one mailbox
to another folder in another or the same mailbox.
- ### app_voicemail: add CLI commands for message manipulation
The following CLI commands have been added to app_voicemail
voicemail show mailbox <mailbox> <context>
Show contents of mailbox <mailbox>@<context>
voicemail remove <mailbox> <context> <from_folder> <messageid>
Remove message <messageid> from <from_folder> in mailbox <mailbox>@<context>
voicemail move <mailbox> <context> <from_folder> <messageid> <to_folder>
Move message <messageid> in mailbox <mailbox>&<context> from <from_folder> to <to_folder>
voicemail forward <from_mailbox> <from_context> <from_folder> <messageid> <to_mailbox> <to_context> <to_folder>
Forward message <messageid> in mailbox <mailbox>@<context> <from_folder> to
mailbox <mailbox>@<context> <to_folder>
Upgrade Notes:
----------------------------------------
Closed Issues:
----------------------------------------
- #129: [bug]: res_speech_aeap: Crash due to NULL format on setup
- #170: [improvement]: app_voicemail - add CLI commands to manipulate messages
- #181: [improvement]: app_voicemail - add manager actions to display and manipulate messages
- #200: [bug]: Regression: In app.h an enum is used before its declaration.
- #202: [improvement]: app_queue: Add support for immediately applying queue caller priority change
- #233: [bug]: Deadlock with MixMonitorMute AMI action
- #263: [bug]: download_externals doesn't always handle versions correctly
- #275: [bug]:Asterisk make now requires ASTCFLAGS='-std=gnu99 -Wdeclaration-after-statement'
- #289: [new-feature]: Add support for deleting channel and global variables
- #315: [improvement]: Search /var/lib/asterisk/sounds/custom for sound files before /var/lib/asterisk/sounds/<lang>
- #316: [bug]: Privilege Escalation in Astrisk's Group permissions.
- #319: [bug]: func_periodic_hook truncates long channel names when setting EncodedChannel
- #321: [bug]: Performance suffers unnecessarily when debugging deadlocks
- #325: [bug]: hangup after beep to avoid waiting for timeout
- #330: [improvement]: Add cel user event helper function
- #349: [improvement]: Add libjwt to third-party
- #352: [bug]: Update qualify_timeout documentation to include DNS note
- #360: [improvement]: Update documentation for CHANGES/UPGRADE files
- #362: [improvement]: Speed up ARI command processing
- #513: [bug]: manager.c: Crash due to regression using wrong free function when built with MALLOC_DEBUG
- #569: [improvement]: Add option to interleave input and output frames on spied channel
Commits By Author:
----------------------------------------
- ### George Joseph (21):
- Cleanup deleted files
- doc: Remove obsolete CHANGES-staging and UPGRADE-staging
- app.h: Move declaration of ast_getdata_result before its first use
- Remove .lastclean and .version from source control
- download_externals: Fix a few version related issues
- rest-api: Updates for new documentation site
- ari-stubs: Fix broken documentation anchors
- ari-stubs: Fix more local anchor references
- ari-stubs: Fix more local anchor references
- safe_asterisk: Change directory permissions to 755
- func_periodic_hook: Don't truncate channel name
- make_buildopts_h, et. al. Allow adding all cflags to buildopts.h
- file.c: Add ability to search custom dir for sounds
- lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
- Add libjwt to third-party
- logger.h: Add ability to change the prefix on SCOPE_TRACE output
- chan_pjsip: Add PJSIPHangup dialplan app and manager action
- SECURITY.md: Update with correct documentation URL
- MergeApproved.yml: Remove unneeded concurrency
- doc: Remove obsolete CHANGES-staging directrory
- Rename dialplan_functions.xml to dialplan_functions_doc.xml
- ### Joshua C. Colp (4):
- app_queue: Add support for applying caller priority change immediately.
- audiohook: Unlock channel in mute if no audiohooks present.
- manager: Tolerate stasis messages with no channel snapshot.
- variables: Add additional variable dialplan functions.
- ### Mark Murawski (1):
- Remove files that are no longer updated
- ### Mike Bradeen (9):
- app_voicemail: add CLI commands for message manipulation
- Adds manager actions to allow move/remove/forward individual messages in a par..
- app_voicemail: Fix for loop declarations
- func_periodic_hook: Add hangup step to avoid timeout
- cel: add publish user event helper
- res_pjsip: update qualify_timeout documentation with DNS note
- res_stasis: signal when new command is queued
- res_speech: allow speech to translate input channel
- app_chanspy: Add 'D' option for dual-channel audio
- ### Naveen Albert (1):
- manager.c: Fix regression due to using wrong free function.
- ### Sean Bright (2):
- res_geolocation: Ensure required 'location_info' is present.
- openssl: Supress deprecation warnings from OpenSSL 3.0
Detail:
----------------------------------------
- ### Rename dialplan_functions.xml to dialplan_functions_doc.xml
Author: George Joseph
Date: 2024-02-26
When using COMPILE_DOUBLE, dialplan_functions.xml is mistaken
for the source for an embedded XML document and gets compiled
to dialplan_functions.o. This causes dialplan_functions.c to
be ignored making its functions unavailable and causing chan_pjsip
to fail to load.
- ### openssl: Supress deprecation warnings from OpenSSL 3.0
Author: Sean Bright
Date: 2022-03-25
There is work going on to update our OpenSSL usage to avoid the
deprecated functions but in the meantime make it possible to compile
in devmode.
- ### app_chanspy: Add 'D' option for dual-channel audio
Author: Mike Bradeen
Date: 2024-01-31
Adds the 'D' option to app chanspy that causes the input and output
frames of the spied channel to be interleaved in the spy output frame.
This allows the input and output of the spied channel to be decoded
separately by the receiver.
If the 'o' option is also set, the 'D' option is ignored as the
audio being spied is inherently one direction.
Fixes: #569
UserNote: The ChanSpy application now accepts the 'D' option which
will interleave the spied audio within the outgoing frames. The
purpose of this is to allow the audio to be read as a Dual channel
stream with separate incoming and outgoing audio. Setting both the
'o' option and the 'D' option and results in the 'D' option being
ignored.
- ### manager.c: Fix regression due to using wrong free function.
Author: Naveen Albert
Date: 2023-12-26
Commit 424be345639d75c6cb7d0bd2da5f0f407dbd0bd5 introduced
a regression by calling ast_free on memory allocated by
realpath. This causes Asterisk to abort when executing this
function. Since the memory is allocated by glibc, it should
be freed using ast_std_free.
Resolves: #513
- ### doc: Remove obsolete CHANGES-staging directrory
Author: George Joseph
Date: 2023-12-15
This should have been removed after the last release but
was missed.
- ### MergeApproved.yml: Remove unneeded concurrency
Author: George Joseph
Date: 2023-12-06
The concurrency parameter on the MergeAndCherryPick job has
been rmeoved. It was a hold-over from earlier days.
- ### SECURITY.md: Update with correct documentation URL
Author: George Joseph
Date: 2023-11-09
- ### chan_pjsip: Add PJSIPHangup dialplan app and manager action
Author: George Joseph
Date: 2023-10-31
See UserNote below.
Exposed the existing Hangup AMI action in manager.c so we can use
all of it's channel search and AMI protocol handling without
duplicating that code in dialplan_functions.c.
Added a lookup function to res_pjsip.c that takes in the
string represenation of the pjsip_status_code enum and returns
the actual status code. I.E. ast_sip_str2rc("DECLINE") returns
603. This allows the caller to specify PJSIPHangup(decline) in
the dialplan, just like Hangup(call_rejected).
Also extracted the XML documentation to its own file since it was
almost as large as the code itself.
UserNote: A new dialplan app PJSIPHangup and AMI action allows you
to hang up an unanswered incoming PJSIP call with a specific SIP
response code in the 400 -> 699 range.
- ### Remove files that are no longer updated
Author: Mark Murawski
Date: 2023-10-30
Fixes: #360
- ### res_speech: allow speech to translate input channel
Author: Mike Bradeen
Date: 2023-09-07
* Allow res_speech to translate the input channel if the
format is translatable to a format suppored by the
speech provider.
Resolves: #129
UserNote: res_speech now supports translation of an input channel
to a format supported by the speech provider, provided a translation
path is available between the source format and provider capabilites.
- ### res_stasis: signal when new command is queued
Author: Mike Bradeen
Date: 2023-10-02
res_statsis's app loop sleeps for up to .2s waiting on input
to a channel before re-checking the command queue. This can
cause delays between channel setup and bridge.
This change is to send a SIGURG on the sleeping thread when
a new command is enqueued. This exits the sleeping thread out
of the ast_waitfor() call triggering the new command being
processed on the channel immediately.
Resolves: #362
UserNote: Call setup times should be significantly improved
when using ARI.
- ### logger.h: Add ability to change the prefix on SCOPE_TRACE output
Author: George Joseph
Date: 2023-10-05
You can now define the _TRACE_PREFIX_ macro to change the
default trace line prefix of "file:line function" to
something else. Full documentation in logger.h.
- ### Add libjwt to third-party
Author: George Joseph
Date: 2023-09-21
The current STIR/SHAKEN implementation is not currently usable due
to encryption issues. Rather than trying to futz with OpenSSL and
the the current code, we can take advantage of the existing
capabilities of libjwt but we first need to add it to the
third-party infrastructure already in place for jansson and
pjproject.
A few tweaks were also made to the third-party infrastructure as
a whole. The jansson "dest" install directory was renamed "dist"
to better match convention, and the third-party Makefile was updated
to clean all product directories not just the ones currently in
use.
Resolves: #349
- ### res_pjsip: update qualify_timeout documentation with DNS note
Author: Mike Bradeen
Date: 2023-09-26
The documentation on qualify_timeout does not explicitly state that the timeout
includes any time required to perform any needed DNS queries on the endpoint.
If the OPTIONS response is delayed due to the DNS query, it can still render an
endpoint as Unreachable if the net time is enough for qualify_timeout to expire.
Resolves: #352
- ### lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
Author: George Joseph
Date: 2023-09-13
Previously, DETECT_DEADLOCKS depended on DEBUG_THREADS.
Unfortunately, DEBUG_THREADS adds a lot of lock tracking overhead
to all of the lock lifecycle calls whereas DETECT_DEADLOCKS just
causes the lock calls to loop over trylock in 200us intervals until
the lock is obtained and spits out log messages if it takes more
than 5 seconds. From a code perspective, the only reason they were
tied together was for logging. So... The ifdefs in lock.c were
refactored to allow DETECT_DEADLOCKS to be enabled without
also enabling DEBUG_THREADS.
Resolves: #321
UserNote: You no longer need to select DEBUG_THREADS to use
DETECT_DEADLOCKS. This removes a significant amount of overhead
if you just want to detect possible deadlocks vs needing full
lock tracing.
- ### cel: add publish user event helper
Author: Mike Bradeen
Date: 2023-09-14
Add a wrapper function around ast_cel_publish_event that
packs event and extras into a blob before publishing
Resolves:#330
- ### file.c: Add ability to search custom dir for sounds
Author: George Joseph
Date: 2023-09-11
To better co-exist with sounds files that may be managed by
packages, custom sound files may now be placed in
AST_DATA_DIR/sounds/custom instead of the standard
AST_DATA_DIR/sounds/<lang> directory. If the new
"sounds_search_custom_dir" option in asterisk.conf is set
to "true", asterisk will search the custom directory for sounds
files before searching the standard directory. For performance
reasons, the "sounds_search_custom_dir" defaults to "false".
Resolves: #315
UserNote: A new option "sounds_search_custom_dir" has been added to
asterisk.conf that allows asterisk to search
AST_DATA_DIR/sounds/custom for sounds files before searching the
standard AST_DATA_DIR/sounds/<lang> directory.
- ### make_buildopts_h, et. al. Allow adding all cflags to buildopts.h
Author: George Joseph
Date: 2023-09-13
The previous behavior of make_buildopts_h was to not add the
non-ABI-breaking MENUSELECT_CFLAGS like DETECT_DEADLOCKS,
REF_DEBUG, etc. to the buildopts.h file because "it caused
ccache to invalidate files and extended compile times". They're
only defined by passing them on the gcc command line with '-D'
options. In practice, including them in the include file rarely
causes any impact because the only time ccache cares is if you
actually change an option so the hit occurrs only once after
you change it.
OK so why would we want to include them? Many IDEs follow the
include files to resolve defines and if the options aren't in an
include file, it can cause the IDE to mark blocks of "ifdeffed"
code as unused when they're really not.
So...
* Added a new menuselect compile option ADD_CFLAGS_TO_BUILDOPTS_H
which tells make_buildopts_h to include the non-ABI-breaking
flags in buildopts.h as well as the ABI-breaking ones. The default
is disabled to preserve current behavior. As before though,
only the ABI-breaking flags appear in AST_BUILDOPTS and only
those are used to calculate AST_BUILDOPT_SUM.
A new AST_BUILDOPT_ALL define was created to capture all of the
flags.
* make_version_c was streamlined to use buildopts.h and also to
create asterisk_build_opts_all[] and ast_get_build_opts_all(void)
* "core show settings" now shows both AST_BUILDOPTS and
AST_BUILDOPTS_ALL.
UserNote: The "Build Options" entry in the "core show settings"
CLI command has been renamed to "ABI related Build Options" and
a new entry named "All Build Options" has been added that shows
both breaking and non-breaking options.
- ### func_periodic_hook: Add hangup step to avoid timeout
Author: Mike Bradeen
Date: 2023-09-12
func_periodic_hook does not hangup after playback, relying on hangup
which keeps the channel alive longer than necessary.
Resolves: #325
- ### func_periodic_hook: Don't truncate channel name
Author: George Joseph
Date: 2023-09-11
func_periodic_hook was truncating long channel names which
causes issues when you need to run other dialplan functions/apps
on the channel.
Resolves: #319
- ### safe_asterisk: Change directory permissions to 755
Author: George Joseph
Date: 2023-09-11
If the safe_asterisk script detects that the /var/lib/asterisk
directory doesn't exist, it now creates it with 755 permissions
instead of 770. safe_asterisk needing to create that directory
should be extremely rare though because it's normally created
by 'make install' which already sets the permissions to 755.
Resolves: #316
- ### variables: Add additional variable dialplan functions.
Author: Joshua C. Colp
Date: 2023-08-31
Using the Set dialplan application does not actually
delete channel or global variables. Instead the
variables are set to an empty value.
This change adds two dialplan functions,
GLOBAL_DELETE and DELETE which can be used to
delete global and channel variables instead
of just setting them to empty.
There is also no ability within the dialplan to
determine if a global or channel variable has
actually been set or not.
This change also adds two dialplan functions,
GLOBAL_EXISTS and VARIABLE_EXISTS which can be
used to determine if a global or channel variable
has been set or not.
Resolves: #289
UserNote: Four new dialplan functions have been added.
GLOBAL_DELETE and DELETE have been added which allows
the deletion of global and channel variables.
GLOBAL_EXISTS and VARIABLE_EXISTS have been added
which checks whether a global or channel variable has
been set.
- ### ari-stubs: Fix more local anchor references
Author: George Joseph
Date: 2023-09-05
Also allow CreateDocs job to be run manually with default branches.
- ### ari-stubs: Fix more local anchor references
Author: George Joseph
Date: 2023-09-05
Also allow CreateDocs job to be run manually with default branches.
- ### ari-stubs: Fix broken documentation anchors
Author: George Joseph
Date: 2023-09-05
All of the links that reference page anchors with capital letters in
the ids (#Something) have been changed to lower case to match the
anchors that are generated by mkdocs.
- ### rest-api: Updates for new documentation site
Author: George Joseph
Date: 2023-06-26
The new documentation site uses traditional markdown instead
of the Confluence flavored version. This required changes in
the mustache templates and the python that generates the files.
- ### app_voicemail: Fix for loop declarations
Author: Mike Bradeen
Date: 2023-08-29
Resolve for loop initial declarations added in cli changes.
Resolves: #275
- ### download_externals: Fix a few version related issues
Author: George Joseph
Date: 2023-08-18
* Fixed issue with the script not parsing the new tag format for
certified releases. The format changed from certified/18.9-cert5
to certified-18.9-cert5.
* Fixed issue where the asterisk version wasn't being considered
when looking for cached versions.
Resolves: #263
- ### Remove .lastclean and .version from source control
Author: George Joseph
Date: 2023-08-18
Historically these were checked in for certified releases but
since the move to github and the unified release process,
they are no longer needed and cause issues.
- ### manager: Tolerate stasis messages with no channel snapshot.
Author: Joshua C. Colp
Date: 2023-08-09
In some cases I have yet to determine some stasis messages may
be created without a channel snapshot. This change adds some
tolerance to this scenario, preventing a crash from occurring.
- ### audiohook: Unlock channel in mute if no audiohooks present.
Author: Joshua C. Colp
Date: 2023-08-09
In the case where mute was called on a channel that had no
audiohooks the code was not unlocking the channel, resulting
in a deadlock.
Resolves: #233
- ### app_queue: Add support for applying caller priority change immediately.
Author: Joshua C. Colp
Date: 2023-07-07
The app_queue module provides both an AMI action and a CLI command
to change the priority of a caller in a queue. Up to now this change
of priority has only been reflected to new callers into the queue.
This change adds an "immediate" option to both the AMI action and
CLI command which immediately applies the priority change respective
to the other callers already in the queue. This can allow, for example,
a caller to be placed at the head of the queue immediately if their
priority is sufficient.
Resolves: #202
UserNote: The 'queue priority caller' CLI command and
'QueueChangePriorityCaller' AMI action now have an 'immediate'
argument which allows the caller priority change to be reflected
immediately, causing the position of a caller to move within the
queue depending on the priorities of the other callers.
- ### app.h: Move declaration of ast_getdata_result before its first use
Author: George Joseph
Date: 2023-07-10
The ast_app_getdata() and ast_app_getdata_terminator() declarations
in app.h were changed recently to return enum ast_getdata_result
(which is how they were defined in app.c). The existing
declaration of ast_getdata_result in app.h was about 1000 lines
after those functions however so under certain circumstances,
a "use before declaration" error was thrown by the compiler.
The declaration of the enum was therefore moved to before those
functions.
Resolves: #200
- ### doc: Remove obsolete CHANGES-staging and UPGRADE-staging
Author: George Joseph
Date: 2023-07-10
- ### res_geolocation: Ensure required 'location_info' is present.
Author: Sean Bright
Date: 2023-07-07
Fixes #189
- ### Adds manager actions to allow move/remove/forward individual messages in a par..
Author: Mike Bradeen
Date: 2023-06-29
Resolves: #181
UserNote: The following manager actions have been added
VoicemailBoxSummary - Generate message list for a given mailbox
VoicemailRemove - Remove a message from a mailbox folder
VoicemailMove - Move a message from one folder to another within a mailbox
VoicemailForward - Copy a message from one folder in one mailbox
to another folder in another or the same mailbox.
- ### app_voicemail: add CLI commands for message manipulation
Author: Mike Bradeen
Date: 2023-06-20
Adds CLI commands to allow move/remove/forward individual messages
from a particular mailbox folder. The forward command can be used
to copy a message within a mailbox or to another mailbox. Also adds
a show mailbox, required to retrieve message ID's.
Resolves: #170
UserNote: The following CLI commands have been added to app_voicemail
voicemail show mailbox <mailbox> <context>
Show contents of mailbox <mailbox>@<context>
voicemail remove <mailbox> <context> <from_folder> <messageid>
Remove message <messageid> from <from_folder> in mailbox <mailbox>@<context>
voicemail move <mailbox> <context> <from_folder> <messageid> <to_folder>
Move message <messageid> in mailbox <mailbox>&<context> from <from_folder> to <to_folder>
voicemail forward <from_mailbox> <from_context> <from_folder> <messageid> <to_mailbox> <to_context> <to_folder>
Forward message <messageid> in mailbox <mailbox>@<context> <from_folder> to
mailbox <mailbox>@<context> <to_folder>
- ### Cleanup deleted files
Author: George Joseph
Date: 2024-02-20

View File

@@ -1,162 +0,0 @@
## Change Log for Release asterisk-certified-18.9-cert9
### Links:
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert9.md)
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert8...certified-18.9-cert9)
- [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert9.tar.gz)
- [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk)
### Summary:
- Commits: 8
- Commit Authors: 4
- Issues Resolved: 4
- Security Advisories Resolved: 0
### User Notes:
- #### tcptls/iostream: Add support for setting SNI on client TLS connections
Secure websocket client connections now send SNI in
the TLS client hello.
### Upgrade Notes:
### Commit Authors:
- George Joseph: (5)
- Ivan Poddubny: (1)
- Mark Murawski: (1)
- Sean Bright: (1)
## Issue and Commit Detail:
### Closed Issues:
- 360: [improvement]: Update documentation for CHANGES/UPGRADE files
- 689: [bug] Document the `Events` argument of the `Login` AMI action
- 713: [bug]: SNI isn't being set on websocket client connections
- 719: [bug]: segfault on start if compiled with DETECT_DEADLOCKS
### Commits By Author:
- ### George Joseph (5):
- Fix incorrect application and function documentation references
- manager.c: Add missing parameters to Login documentation
- rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
- make_buildopts_h: Always include DETECT_DEADLOCKS
- tcptls/iostream: Add support for setting SNI on client TLS connections
- ### Ivan Poddubny (1):
- asterisk.c: Fix sending incorrect messages to systemd notify
- ### Mark Murawski (1):
- Remove files that are no longer updated
- ### Sean Bright (1):
- res_http_websocket.c: Set hostname on client for certificate validation.
### Commit List:
- asterisk.c: Fix sending incorrect messages to systemd notify
- res_http_websocket.c: Set hostname on client for certificate validation.
- tcptls/iostream: Add support for setting SNI on client TLS connections
- make_buildopts_h: Always include DETECT_DEADLOCKS
- rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
- manager.c: Add missing parameters to Login documentation
- Fix incorrect application and function documentation references
- Remove files that are no longer updated
### Commit Details:
#### asterisk.c: Fix sending incorrect messages to systemd notify
Author: Ivan Poddubny
Date: 2024-05-05
Send "RELOADING=1" instead of "RELOAD=1" to follow the format
expected by systemd (see sd_notify(3) man page).
Do not send STOPPING=1 in remote console mode:
attempting to execute "asterisk -rx" by the main process leads to
a warning if NotifyAccess=main (the default) or to a forced termination
if NotifyAccess=all.
#### res_http_websocket.c: Set hostname on client for certificate validation.
Author: Sean Bright
Date: 2023-11-09
Additionally add a `assert()` to in the TLS client setup code to
ensure that hostname is set when it is supposed to be.
Fixes #433
#### tcptls/iostream: Add support for setting SNI on client TLS connections
Author: George Joseph
Date: 2024-04-23
If the hostname field of the ast_tcptls_session_args structure is
set (which it is for websocket client connections), that hostname
will now automatically be used in an SNI TLS extension in the client
hello.
Resolves: #713
UserNote: Secure websocket client connections now send SNI in
the TLS client hello.
#### make_buildopts_h: Always include DETECT_DEADLOCKS
Author: George Joseph
Date: 2024-04-27
Since DETECT_DEADLOCKS is now split from DEBUG_THREADS, it must
always be included in buildopts.h instead of only when
ADD_CFLAGS_TO_BUILDOPTS_H is defined. A SEGV will result otherwise.
Resolves: #719
#### rtp_engine and stun: call ast_register_atexit instead of ast_register_cleanup
Author: George Joseph
Date: 2024-04-02
rtp_engine.c and stun.c were calling ast_register_cleanup which
is skipped if any loadable module can't be cleanly unloaded
when asterisk shuts down. Since this will always be the case,
their cleanup functions never get run. In a practical sense
this makes no difference since asterisk is shutting down but if
you're in development mode and trying to use the leak sanitizer,
the leaks from both of those modules clutter up the output.
#### manager.c: Add missing parameters to Login documentation
Author: George Joseph
Date: 2024-04-03
* Added the AuthType and Key parameters for MD5 authentication.
* Added the Events parameter.
Resolves: #689
#### Fix incorrect application and function documentation references
Author: George Joseph
Date: 2024-04-01
There were a few references in the embedded documentation XML
where the case didn't match or where the referenced app or function
simply didn't exist any more. These were causing 404 responses
in docs.asterisk.org.
#### Remove files that are no longer updated
Author: Mark Murawski
Date: 2023-10-30
Fixes: #360

View File

@@ -1,174 +0,0 @@
<html><head><title>Readme for asterisk-certified-18.9-cert17</title></head><body>
<h1>The Asterisk(R) Open Source PBX</h1>
<pre><code>By Mark Spencer &lt;markster@digium.com&gt; and the Asterisk.org developer community.
Copyright (C) 2001-2025 Sangoma Technologies Corporation and other copyright holders.
</code></pre>
<h2>SECURITY</h2>
<p>It is imperative that you read and fully understand the contents of
the security information document before you attempt to configure and run
an Asterisk server.</p>
<p>See <a href="https://docs.asterisk.org/Deployment/Important-Security-Considerations">Important Security Considerations</a> for more information.</p>
<h2>WHAT IS ASTERISK ?</h2>
<p>Asterisk is an Open Source PBX and telephony toolkit. It is, in a
sense, middleware between Internet and telephony channels on the bottom,
and Internet and telephony applications at the top. However, Asterisk supports
more telephony interfaces than just Internet telephony. Asterisk also has a
vast amount of support for traditional PSTN telephony, as well.</p>
<p>For more information on the project itself, please visit the <a href="https://www.asterisk.org">Asterisk
Home Page</a> and the official
<a href="https://docs.asterisk.org">Asterisk Documentation</a>.</p>
<h2>SUPPORTED OPERATING SYSTEMS</h2>
<h3>Linux</h3>
<p>The Asterisk Open Source PBX is developed and tested primarily on the
GNU/Linux operating system, and is supported on every major GNU/Linux
distribution.</p>
<h3>Others</h3>
<p>Asterisk has also been 'ported' and reportedly runs properly on other
operating systems as well, Apple's Mac OS X, and the BSD variants.</p>
<h2>GETTING STARTED</h2>
<p>Most users are using VoIP/SIP exclusively these days but if you need to
interface to TDM or analog services or devices, be sure you've got supported
hardware.</p>
<p>Supported telephony hardware includes:
* All Analog and Digital Interface cards from Sangoma
* Any full duplex sound card supported by PortAudio
* The Xorcom Astribank channel bank</p>
<h3>UPGRADING FROM AN EARLIER VERSION</h3>
<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-18.9-cert17.html">Change Logs</a></p>
<!-- END-CHANGELOGS -->
<h3>NEW INSTALLATIONS</h3>
<p>Ensure that your system contains a compatible compiler and development
libraries. Asterisk requires either the GNU Compiler Collection (GCC) version
4.1 or higher, or a compiler that supports the C99 specification and some of
the gcc language extensions. In addition, your system needs to have the C
library headers available, and the headers and libraries for ncurses.</p>
<p>There are many modules that have additional dependencies. To see what
libraries are being looked for, see <code>./configure --help</code>, or run
<code>make menuselect</code> to view the dependencies for specific modules.</p>
<p>On many distributions, these dependencies are installed by packages with names
like 'glibc-devel', 'ncurses-devel', 'openssl-devel' and 'zlib-devel'
or similar. The <code>contrib/scripts/install_prereq</code> script can be used to install
the dependencies for most Debian and Redhat based Linux distributions.
The script also handles SUSE, Arch, Gentoo, FreeBSD, NetBSD and OpenBSD but
those distributions mightnoit have complete support or they might be out of date.</p>
<p>So, let's proceed:</p>
<ol>
<li>
<p>Read the documentation.<br>
The <a href="https://docs.asterisk.org">Asterisk Documentation</a> website has full
information for building, installing, configuring and running Asterisk.</p>
</li>
<li>
<p>Run <code>./configure</code><br>
Execute the configure script to guess values for system-dependent
variables used during compilation. If the script indicates that some required
components are missing, you can run <code>./contrib/scripts/install_prereq install</code>
to install the necessary components. Note that this will install all dependencies
for every functionality of Asterisk. After running the script, you will need
to rerun <code>./configure</code>.</p>
</li>
<li>
<p>Run <code>make menuselect</code><br>
This is needed if you want to select the modules that will be compiled and to
check dependencies for various optional modules.</p>
</li>
<li>
<p>Run <code>make</code><br>
Assuming the build completes successfully:</p>
</li>
<li>
<p>Run <code>make install</code><br>
If this is your first time working with Asterisk, you may wish to install
the sample PBX, with demonstration extensions, etc. If so, run:</p>
</li>
<li>
<p>Run <code>make samples</code><br>
Doing so will overwrite any existing configuration files you have installed.</p>
</li>
<li>
<p>Finally, you can launch Asterisk in the foreground mode (not a daemon) with
<code>asterisk -vvvc</code><br>
You'll see a bunch of verbose messages fly by your screen as Asterisk
initializes (that's the "very very verbose" mode). When it's ready, if
you specified the "c" then you'll get a command line console, that looks
like this:<br>
<code>*CLI&gt;</code><br>
You can type <code>core show help</code> at any time to get help with the system. For help
with a specific command, type <code>core show help &lt;command&gt;</code>.</p>
</li>
</ol>
<p><code>man asterisk</code> at the Unix/Linux command prompt will give you detailed
information on how to start and stop Asterisk, as well as all the command
line options for starting Asterisk.</p>
<h3>ABOUT CONFIGURATION FILES</h3>
<p>All Asterisk configuration files share a common format. Comments are
delimited by <code>;</code> (since <code>#</code> of course, being a DTMF digit, may occur in
many places). A configuration file is divided into sections whose names
appear in <code>[]</code>'s. Each section typically contains statements in the form
<code>variable = value</code> although you may see <code>variable =&gt; value</code> in older samples.</p>
<h3>SPECIAL NOTE ON TIME</h3>
<p>Those using SIP phones should be aware that Asterisk is sensitive to
large jumps in time. Manually changing the system time using date(1)
(or other similar commands) may cause SIP registrations and other
internal processes to fail. For this reason, you should always use
a time synchronization package to keep your system time accurate.
All OS/distributions make one or more of the following packages
available:</p>
<ul>
<li>ntpd/ntpsec</li>
<li>chronyd</li>
<li>systemd-timesyncd</li>
</ul>
<p>Be sure to install and configure one (and only one) of them.</p>
<h3>FILE DESCRIPTORS</h3>
<p>Depending on the size of your system and your configuration,
Asterisk can consume a large number of file descriptors. In UNIX,
file descriptors are used for more than just files on disk. File
descriptors are also used for handling network communication
(e.g. SIP, IAX2, or H.323 calls) and hardware access (e.g. analog and
digital trunk hardware). Asterisk accesses many on-disk files for
everything from configuration information to voicemail storage.</p>
<p>Most systems limit the number of file descriptors that Asterisk can
have open at one time. This can limit the number of simultaneous
calls that your system can handle. For example, if the limit is set
at 1024 (a common default value) Asterisk can handle approximately 150
SIP calls simultaneously. To change the number of file descriptors
follow the instructions for your system below:</p>
<h4>PAM-BASED LINUX SYSTEM</h4>
<p>If your system uses PAM (Pluggable Authentication Modules) edit
<code>/etc/security/limits.conf</code>. Add these lines to the bottom of the file:</p>
<pre><code class="language-text">root soft nofile 4096
root hard nofile 8196
asterisk soft nofile 4096
asterisk hard nofile 8196
</code></pre>
<p>(adjust the numbers to taste). You may need to reboot the system for
these changes to take effect.</p>
<h4>GENERIC UNIX SYSTEM</h4>
<p>If there are no instructions specifically adapted to your system
above you can try adding the command <code>ulimit -n 8192</code> to the script
that starts Asterisk.</p>
<h2>MORE INFORMATION</h2>
<p>Visit the <a href="https://docs.asterisk.org">Asterisk Documentation</a> website
for more documentation on various features and please read all the
configuration samples that include documentation on the configuration options.</p>
<p>Finally, you may wish to join the
<a href="https://community.asterisk.org">Asterisk Community Forums</a></p>
<p>Welcome to the growing worldwide community of Asterisk users!</p>
<pre><code> Mark Spencer, and the Asterisk.org development community
</code></pre>
<hr>
<p>Asterisk is a trademark of Sangoma Technologies Corporation</p>
<p>[<a href="https://www.sangoma.com/">Sangoma</a>]
[<a href="https://www.asterisk.org">Home Page</a>]
[<a href="https://www.asterisk.org/support">Support</a>]
[<a href="https://docs.asterisk.org">Documentation</a>]
[<a href="https://community.asterisk.org">Community Forums</a>]
[<a href="https://github.com/asterisk/asterisk/releases">Release Notes</a>]
[<a href="https://docs.asterisk.org/Deployment/Important-Security-Considerations/">Security</a>]
[<a href="https://lists.digium.com">Mailing List Archive</a>] </p>
</body></html>

View File

@@ -55,7 +55,7 @@ If you are updating from a previous version of Asterisk, make sure you
read the Change Logs.
<!-- CHANGELOGS (the URL will change based on the location of this README) -->
[Change Logs](ChangeLogs/ChangeLog-certified-18.9-cert17.html)
[Change Logs](https://downloads.asterisk.org/pub/telephony/asterisk)
<!-- END-CHANGELOGS -->
### NEW INSTALLATIONS

View File

@@ -0,0 +1,18 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><title>Release Summary - asterisk-certified/18.9-cert4</title><h1 align="center"><a name="top">Release Summary</a></h1><h3 align="center">asterisk-certified/18.9-cert4</h3><h3 align="center">Date: 2023-01-19</h3><h3 align="center">&lt;asteriskteam@digium.com&gt;</h3><hr><h2 align="center">Table of Contents</h2><ol>
<li><a href="#summary">Summary</a></li>
<li><a href="#contributors">Contributors</a></li>
<li><a href="#closed_issues">Closed Issues</a></li>
<li><a href="#open_issues">Open Issues</a></li>
<li><a href="#diffstat">Diffstat</a></li>
</ol><hr><a name="summary"><h2 align="center">Summary</h2></a><center><a href="#top">[Back to Top]</a></center><p>This release is a point release of an existing major version. The changes included were made to address problems that have been identified in this release series, or are minor, backwards compatible new features or improvements. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous version are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.</p><p>The data in this summary reflects changes that have been made since the previous release, asterisk-certified/18.9-cert3.</p><hr><a name="contributors"><h2 align="center">Contributors</h2></a><center><a href="#top">[Back to Top]</a></center><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were affected by commits that went into this release.</p><table width="100%" border="0">
<tr><th width="33%">Coders</th><th width="33%">Testers</th><th width="33%">Reporters</th></tr>
<tr valign="top"><td width="33%">1 Joshua C. Colp <jcolp@sangoma.com><br/>1 Alexandre Fournier <afournier@wazo.io><br/>1 George Joseph <gjoseph@digium.com><br/></td><td width="33%"><td width="33%">1 Joshua C. Colp <jcolp@digium.com><br/>1 Alexandre Fournier <afournier@wazo.io><br/>1 LA <learbia@gmail.com><br/></td></tr>
</table><hr><a name="closed_issues"><h2 align="center">Closed Issues</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p><h3>Bug</h3><h4>Category: Resources/res_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-30369">ASTERISK-30369</a>: res_pjsip: Websockets from same IP shut down when they shouldn't be<br/>Reported by: Joshua C. Colp<ul>
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=dda609c9df2eebbd7c227d5a7db5586e1344d1a1">[dda609c9df]</a> George Joseph -- res_pjsip_transport_websocket: Add remote port to transport</li>
</ul><br><h4>Category: Resources/res_pjsip_transport_websocket</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-30065">ASTERISK-30065</a>: pjsip: Open Websocket connection is not reused for outgoing requests<br/>Reported by: LA<ul>
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c20750bbaf859a3caae408a493dae3c180d49d96">[c20750bbaf]</a> Joshua C. Colp -- res_pjsip_transport_websocket: Also set the remote name.</li>
</ul><br><h4>Category: pjproject/pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-30065">ASTERISK-30065</a>: pjsip: Open Websocket connection is not reused for outgoing requests<br/>Reported by: LA<ul>
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c20750bbaf859a3caae408a493dae3c180d49d96">[c20750bbaf]</a> Joshua C. Colp -- res_pjsip_transport_websocket: Also set the remote name.</li>
</ul><br><hr><a name="open_issues"><h2 align="center">Open Issues</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all open issues from the issue tracker that were referenced by changes that went into this release.</p><h3>Bug</h3><h4>Category: Resources/res_geolocation</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-30346">ASTERISK-30346</a>: Fix NULL dereferencing issue in Geolocation<br/>Reported by: Alexandre Fournier<ul>
<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=646a9a7ec6da8061b2b9ff34aedc455789035d7c">[646a9a7ec6]</a> Alexandre Fournier -- res_geoloc: fix NULL pointer dereference bug</li>
</ul><br><hr><a name="diffstat"><h2 align="center">Diffstat Results</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p><pre>0 files changed</pre><br></html>

View File

@@ -0,0 +1,119 @@
Release Summary
asterisk-certified/18.9-cert4
Date: 2023-01-19
<asteriskteam@digium.com>
----------------------------------------------------------------------
Table of Contents
1. Summary
2. Contributors
3. Closed Issues
4. Open Issues
5. Diffstat
----------------------------------------------------------------------
Summary
[Back to Top]
This release is a point release of an existing major version. The changes
included were made to address problems that have been identified in this
release series, or are minor, backwards compatible new features or
improvements. Users should be able to safely upgrade to this version if
this release series is already in use. Users considering upgrading from a
previous version are strongly encouraged to review the UPGRADE.txt
document as well as the CHANGES document for information about upgrading
to this release series.
The data in this summary reflects changes that have been made since the
previous release, asterisk-certified/18.9-cert3.
----------------------------------------------------------------------
Contributors
[Back to Top]
This table lists the people who have submitted code, those that have
tested patches, as well as those that reported issues on the issue tracker
that were resolved in this release. For coders, the number is how many of
their patches (of any size) were committed into this release. For testers,
the number is the number of times their name was listed as assisting with
testing a patch. Finally, for reporters, the number is the number of
issues that they reported that were affected by commits that went into
this release.
Coders Testers Reporters
1 Joshua C. Colp 1 Joshua C. Colp
1 Alexandre Fournier 1 Alexandre Fournier
1 George Joseph 1 LA
----------------------------------------------------------------------
Closed Issues
[Back to Top]
This is a list of all issues from the issue tracker that were closed by
changes that went into this release.
Bug
Category: Resources/res_pjsip
ASTERISK-30369: res_pjsip: Websockets from same IP shut down when they
shouldn't be
Reported by: Joshua C. Colp
* [dda609c9df] George Joseph -- res_pjsip_transport_websocket: Add
remote port to transport
Category: Resources/res_pjsip_transport_websocket
ASTERISK-30065: pjsip: Open Websocket connection is not reused for
outgoing requests
Reported by: LA
* [c20750bbaf] Joshua C. Colp -- res_pjsip_transport_websocket: Also set
the remote name.
Category: pjproject/pjsip
ASTERISK-30065: pjsip: Open Websocket connection is not reused for
outgoing requests
Reported by: LA
* [c20750bbaf] Joshua C. Colp -- res_pjsip_transport_websocket: Also set
the remote name.
----------------------------------------------------------------------
Open Issues
[Back to Top]
This is a list of all open issues from the issue tracker that were
referenced by changes that went into this release.
Bug
Category: Resources/res_geolocation
ASTERISK-30346: Fix NULL dereferencing issue in Geolocation
Reported by: Alexandre Fournier
* [646a9a7ec6] Alexandre Fournier -- res_geoloc: fix NULL pointer
dereference bug
----------------------------------------------------------------------
Diffstat Results
[Back to Top]
This is a summary of the changes to the source code that went into this
release that was generated using the diffstat utility.
0 files changed

View File

@@ -1352,21 +1352,3 @@ ALTER TABLE ps_endpoints ADD COLUMN stir_shaken_profile VARCHAR(80);
UPDATE alembic_version SET version_num='9f3692b1654b' WHERE alembic_version.version_num = '7197536bb68d';
-- Running upgrade 9f3692b1654b -> 655054a68ad5
ALTER TABLE ps_endpoints ADD COLUMN tenantid VARCHAR(80);
UPDATE alembic_version SET version_num='655054a68ad5' WHERE alembic_version.version_num = '9f3692b1654b';
-- Running upgrade 655054a68ad5 -> 801b9fced8b7
ALTER TABLE ps_subscription_persistence ADD COLUMN generator_data TEXT;
UPDATE alembic_version SET version_num='801b9fced8b7' WHERE alembic_version.version_num = '655054a68ad5';
-- Running upgrade 801b9fced8b7 -> 4f91fc18c979
ALTER TABLE ps_endpoints ADD COLUMN suppress_moh_on_sendonly ENUM('0','1','off','on','false','true','no','yes');
UPDATE alembic_version SET version_num='4f91fc18c979' WHERE alembic_version.version_num = '801b9fced8b7';

View File

@@ -1,29 +0,0 @@
BEGIN;
CREATE TABLE alembic_version (
version_num VARCHAR(32) NOT NULL,
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);
-- Running upgrade -> 4105ee839f58
CREATE TABLE queue_log (
id BIGSERIAL NOT NULL,
time TIMESTAMP WITHOUT TIME ZONE,
callid VARCHAR(80),
queuename VARCHAR(256),
agent VARCHAR(80),
event VARCHAR(32),
data1 VARCHAR(100),
data2 VARCHAR(100),
data3 VARCHAR(100),
data4 VARCHAR(100),
data5 VARCHAR(100),
PRIMARY KEY (id),
UNIQUE (id)
);
INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58') RETURNING alembic_version.version_num;
COMMIT;

View File

@@ -33,13 +33,3 @@ ALTER TABLE voicemail_messages MODIFY recording BLOB(4294967295) NULL;
UPDATE alembic_version SET version_num='39428242f7f5' WHERE alembic_version.version_num = 'a2e9769475e';
-- Running upgrade 39428242f7f5 -> 1c55c341360f
UPDATE alembic_version SET version_num='1c55c341360f' WHERE alembic_version.version_num = '39428242f7f5';
-- Running upgrade 1c55c341360f -> 64fae6bbe7fb
DROP INDEX voicemail_messages_dir ON voicemail_messages;
UPDATE alembic_version SET version_num='64fae6bbe7fb' WHERE alembic_version.version_num = '1c55c341360f';

View File

@@ -31,7 +31,7 @@ CREATE TABLE cdr (
sequence INTEGER
);
INSERT INTO alembic_version (version_num) VALUES ('210693f3123d') RETURNING alembic_version.version_num;
INSERT INTO alembic_version (version_num) VALUES ('210693f3123d');
-- Running upgrade 210693f3123d -> 54cde9847798

View File

@@ -272,7 +272,7 @@ CREATE TABLE musiconhold (
PRIMARY KEY (name)
);
INSERT INTO alembic_version (version_num) VALUES ('4da0c5f79a9c') RETURNING alembic_version.version_num;
INSERT INTO alembic_version (version_num) VALUES ('4da0c5f79a9c');
-- Running upgrade 4da0c5f79a9c -> 43956d550a44
@@ -1466,23 +1466,5 @@ ALTER TABLE ps_endpoints ADD COLUMN stir_shaken_profile VARCHAR(80);
UPDATE alembic_version SET version_num='9f3692b1654b' WHERE alembic_version.version_num = '7197536bb68d';
-- Running upgrade 9f3692b1654b -> 655054a68ad5
ALTER TABLE ps_endpoints ADD COLUMN tenantid VARCHAR(80);
UPDATE alembic_version SET version_num='655054a68ad5' WHERE alembic_version.version_num = '9f3692b1654b';
-- Running upgrade 655054a68ad5 -> 801b9fced8b7
ALTER TABLE ps_subscription_persistence ADD COLUMN generator_data TEXT;
UPDATE alembic_version SET version_num='801b9fced8b7' WHERE alembic_version.version_num = '655054a68ad5';
-- Running upgrade 801b9fced8b7 -> 4f91fc18c979
ALTER TABLE ps_endpoints ADD COLUMN suppress_moh_on_sendonly ast_bool_values;
UPDATE alembic_version SET version_num='4f91fc18c979' WHERE alembic_version.version_num = '801b9fced8b7';
COMMIT;

View File

@@ -1,29 +0,0 @@
BEGIN;
CREATE TABLE alembic_version (
version_num VARCHAR(32) NOT NULL,
CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
);
-- Running upgrade -> 4105ee839f58
CREATE TABLE queue_log (
id BIGSERIAL NOT NULL,
time TIMESTAMP WITHOUT TIME ZONE,
callid VARCHAR(80),
queuename VARCHAR(256),
agent VARCHAR(80),
event VARCHAR(32),
data1 VARCHAR(100),
data2 VARCHAR(100),
data3 VARCHAR(100),
data4 VARCHAR(100),
data5 VARCHAR(100),
PRIMARY KEY (id),
UNIQUE (id)
);
INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58') RETURNING alembic_version.version_num;
COMMIT;

View File

@@ -27,7 +27,7 @@ ALTER TABLE voicemail_messages ADD CONSTRAINT voicemail_messages_dir_msgnum PRIM
CREATE INDEX voicemail_messages_dir ON voicemail_messages (dir);
INSERT INTO alembic_version (version_num) VALUES ('a2e9769475e') RETURNING alembic_version.version_num;
INSERT INTO alembic_version (version_num) VALUES ('a2e9769475e');
-- Running upgrade a2e9769475e -> 39428242f7f5
@@ -35,15 +35,5 @@ ALTER TABLE voicemail_messages ALTER COLUMN recording TYPE BYTEA;
UPDATE alembic_version SET version_num='39428242f7f5' WHERE alembic_version.version_num = 'a2e9769475e';
-- Running upgrade 39428242f7f5 -> 1c55c341360f
UPDATE alembic_version SET version_num='1c55c341360f' WHERE alembic_version.version_num = '39428242f7f5';
-- Running upgrade 1c55c341360f -> 64fae6bbe7fb
DROP INDEX voicemail_messages_dir;
UPDATE alembic_version SET version_num='64fae6bbe7fb' WHERE alembic_version.version_num = '1c55c341360f';
COMMIT;

13
contrib/scripts/safe_asterisk Normal file → Executable file
View File

@@ -6,7 +6,7 @@ ASTVARRUNDIR="__ASTERISK_VARRUN_DIR__"
ASTVARLOGDIR="__ASTERISK_LOG_DIR__"
CLIARGS="$*" # Grab any args passed to safe_asterisk
#TTY=9 # TTY (if you want one) for Asterisk to run on
TTY=9 # TTY (if you want one) for Asterisk to run on
CONSOLE=yes # Whether or not you want a console
#NOTIFY=root@localhost # Who to notify about crashes
#EXEC=/path/to/somescript # Run this command if Asterisk crashes
@@ -39,8 +39,6 @@ PRIORITY=0
message() {
if test -n "$TTY" && test "$TTY" != "no"; then
echo "$1" >/dev/${TTY}
else
echo "$1" >&2
fi
if test -n "$SYSLOG"; then
logger -p "${SYSLOG}.warn" -t safe_asterisk[$$] "$1"
@@ -83,7 +81,7 @@ else
fi
fi
SYSCTL_MAXFILES="fs.file-max"
elif `uname -s | grep Darwin /dev/null 2>&1`; then
elif `uname -s | grep Darwin >/dev/null 2>&1`; then
SYSCTL_MAXFILES="kern.maxfiles"
fi
@@ -164,7 +162,7 @@ trap '' PIPE
if test -d "${ASTETCDIR}/startup.d"; then
# If this script is run by root, the startup.d directory and all scripts in it
# must be owned by root.
if test `id -u` == 0; then
if test `id -u` = 0; then
dir_owner=$(stat -c '%u' "${ASTETCDIR}/startup.d" 2>/dev/null)
if test "${dir_owner}" != 0 ; then
message "FATAL: ${ASTETCDIR}/startup.d is not owned by root"
@@ -172,7 +170,7 @@ if test -d "${ASTETCDIR}/startup.d"; then
fi
# Check all scripts for proper ownership before sourcing any of them.
for script in $(find "${ASTETCDIR}/startup.d/" -name '*.sh') ; do
for script in "${ASTETCDIR}/startup.d/"*.sh ; do
if test -r "${script}"; then
script_owner=$(stat -c '%u' "${script}" 2>/dev/null)
if test "$script_owner" != 0 ; then
@@ -183,8 +181,7 @@ if test -d "${ASTETCDIR}/startup.d"; then
done
fi
for script in $(find "${ASTETCDIR}/startup.d/" -name '*.sh') ; do
echo sourceing
for script in "${ASTETCDIR}/startup.d/"*.sh ; do
. "${script}"
done
fi

View File

@@ -1055,7 +1055,6 @@ static struct cdr_object *cdr_object_alloc(struct ast_channel_snapshot *chan, co
ast_string_field_set(cdr, uniqueid, chan->base->uniqueid);
ast_string_field_set(cdr, name, chan->base->name);
ast_string_field_set(cdr, linkedid, chan->peer->linkedid);
ast_string_field_set(cdr, tenantid, chan->base->tenantid);
cdr->disposition = AST_CDR_NULL;
cdr->sequence = ast_atomic_fetchadd_int(&global_cdr_sequence, +1);
cdr->lastevent = *event_time;
@@ -1325,7 +1324,7 @@ static struct ast_cdr *cdr_object_create_public_records(struct cdr_object *cdr)
ast_copy_string(cdr_copy->lastdata, it_cdr->data, sizeof(cdr_copy->lastdata));
ast_copy_string(cdr_copy->dst, it_cdr->exten, sizeof(cdr_copy->dst));
ast_copy_string(cdr_copy->dcontext, it_cdr->context, sizeof(cdr_copy->dcontext));
ast_copy_string(cdr_copy->tenantid, it_cdr->tenantid, sizeof(cdr_copy->tenantid));
ast_copy_string(cdr_copy->tenantid, party_a->base->tenantid, sizeof(cdr_copy->tenantid));
/* Party B */
if (party_b) {

View File

@@ -39,6 +39,14 @@ static const pj_str_t diversion_name = { "Diversion", 9 };
static const pj_str_t history_info_name = { "History-Info", 12 };
static pj_str_t HISTINFO_SUPPORTED_NAME = { "histinfo", 8 };
/*
* Should we queue a frame with the updated redirecting information.
*/
typedef enum {
PJSIP_DIVERSION_NOSEND_UPDATE = 0,
PJSIP_DIVERSION_SEND_UPDATE = 1,
} pjsip_diversion_send_update;
/*!
* \internal
* \brief Determine if the given string is a SIP token.
@@ -385,7 +393,8 @@ static void set_redirecting_reason(pjsip_fromto_hdr *from_info, pjsip_name_addr
static void set_redirecting(struct ast_sip_session *session,
pjsip_fromto_hdr *from_info,
pjsip_name_addr *to_info)
pjsip_name_addr *to_info,
pjsip_diversion_send_update send_update)
{
struct ast_party_redirecting data;
struct ast_set_party_redirecting update;
@@ -417,8 +426,8 @@ static void set_redirecting(struct ast_sip_session *session,
++data.count;
ast_channel_set_redirecting(session->channel, &data, &update);
/* Only queue an indication if it was due to a response */
if (session->inv_session->role == PJSIP_ROLE_UAC) {
/* Only queue an indication if it was due to a response received pre media*/
if (session->inv_session->role == PJSIP_ROLE_UAC && send_update) {
ast_channel_queue_redirecting_update(session->channel, &data, &update);
}
ast_party_redirecting_free(&data);
@@ -430,7 +439,7 @@ static int diversion_incoming_request(struct ast_sip_session *session, pjsip_rx_
if (hdr) {
set_redirecting(session, hdr, (pjsip_name_addr*)
PJSIP_MSG_TO_HDR(rdata->msg_info.msg)->uri);
PJSIP_MSG_TO_HDR(rdata->msg_info.msg)->uri, PJSIP_DIVERSION_SEND_UPDATE);
} else {
pjsip_fromto_hdr *history_info_to;
pjsip_fromto_hdr *history_info_from;
@@ -440,14 +449,14 @@ static int diversion_incoming_request(struct ast_sip_session *session, pjsip_rx_
/* If History-Info is present, then it will also include the original
redirected-from in addition to the redirected-to */
history_info_from = get_history_info_header(rdata, 1);
set_redirecting(session, history_info_from, (pjsip_name_addr*)history_info_to->uri);
set_redirecting(session, history_info_from, (pjsip_name_addr*)history_info_to->uri, PJSIP_DIVERSION_SEND_UPDATE);
}
}
return 0;
}
static void diversion_incoming_response(struct ast_sip_session *session, pjsip_rx_data *rdata)
static void diversion_incoming_response(struct ast_sip_session *session, pjsip_rx_data *rdata, pjsip_diversion_send_update send_update)
{
static const pj_str_t contact_name = { "Contact", 7 };
static const pj_str_t contact_name_s = { "m", 1 };
@@ -472,7 +481,7 @@ static void diversion_incoming_response(struct ast_sip_session *session, pjsip_r
/* If History-Info is present, then it will also include the original
redirected-from in addition to the redirected-to */
history_info_from = get_history_info_header(rdata, 1);
set_redirecting(session, history_info_from, (pjsip_name_addr*)history_info_to->uri);
set_redirecting(session, history_info_from, (pjsip_name_addr*)history_info_to->uri, send_update);
return;
}
if (!div_hdr && !session->id.number.valid) {
@@ -484,16 +493,30 @@ static void diversion_incoming_response(struct ast_sip_session *session, pjsip_r
if (status.code == 302) {
/* With 302, Contact indicates the final destination and possibly Diversion indicates the hop before */
contact_hdr = pjsip_msg_find_hdr_by_names(rdata->msg_info.msg, &contact_name, &contact_name_s, NULL);
set_redirecting(session, div_hdr, contact_hdr ? (pjsip_name_addr*)contact_hdr->uri :
(pjsip_name_addr*)PJSIP_MSG_FROM_HDR(rdata->msg_info.msg)->uri);
(pjsip_name_addr*)PJSIP_MSG_FROM_HDR(rdata->msg_info.msg)->uri, send_update);
} else {
/* With 181, Diversion is non-standard, but if present indicates the new final destination, and To indicating the original */
set_redirecting(session, PJSIP_MSG_TO_HDR(rdata->msg_info.msg),
div_hdr ? (pjsip_name_addr*)div_hdr->uri : NULL);
div_hdr ? (pjsip_name_addr*)div_hdr->uri : NULL, send_update);
}
}
static void diversion_incoming_response_media(struct ast_sip_session *session, pjsip_rx_data *rdata)
{
/* Trigger an update if the event is triggered by the PJSIP AST_SIP_SESSION_BEFORE_MEDIA callback */
diversion_incoming_response(session, rdata, PJSIP_DIVERSION_SEND_UPDATE);
return;
}
static void diversion_incoming_response_redirecting(struct ast_sip_session *session, pjsip_rx_data *rdata)
{
/* Don't trigger an update if the event is triggered by the PJSIP AST_SIP_SESSION_REDIRECTING callback
otherwise, we will send a duplicate 181 to the UAC */
diversion_incoming_response(session, rdata, PJSIP_DIVERSION_NOSEND_UPDATE);
return;
}
/*!
* \internal
* \brief Adds diversion header information to an outbound SIP message
@@ -690,20 +713,29 @@ static void diversion_outgoing_response(struct ast_sip_session *session, pjsip_t
/* add to 302 and 181 */
if (PJSIP_IS_STATUS_IN_CLASS(status.code, 300) || (status.code == 181)) {
get_redirecting_add_diversion(session, tdata);
}
get_redirecting_add_diversion(session, tdata);
}
}
static struct ast_sip_session_supplement diversion_supplement = {
static struct ast_sip_session_supplement diversion_supplement_media = {
.method = "INVITE",
/* this supplement needs to be called after caller id
and after the channel has been created */
.priority = AST_SIP_SUPPLEMENT_PRIORITY_CHANNEL + 100,
.incoming_response = diversion_incoming_response_media,
.response_priority = AST_SIP_SESSION_BEFORE_MEDIA,
};
static struct ast_sip_session_supplement diversion_supplement_redirecting = {
.method = "INVITE",
/* this supplement needs to be called after caller id
and after the channel has been created */
.priority = AST_SIP_SUPPLEMENT_PRIORITY_CHANNEL + 100,
.incoming_request = diversion_incoming_request,
.incoming_response = diversion_incoming_response,
.incoming_response = diversion_incoming_response_redirecting,
.outgoing_request = diversion_outgoing_request,
.outgoing_response = diversion_outgoing_response,
.response_priority = AST_SIP_SESSION_BEFORE_MEDIA,
.response_priority = AST_SIP_SESSION_BEFORE_REDIRECTING,
};
static int load_module(void)
@@ -711,13 +743,15 @@ static int load_module(void)
/* Because we are passing static memory to pjsip, we need to make sure it
* stays valid while we potentially have active sessions */
ast_module_shutdown_ref(ast_module_info->self);
ast_sip_session_register_supplement(&diversion_supplement);
ast_sip_session_register_supplement(&diversion_supplement_media);
ast_sip_session_register_supplement(&diversion_supplement_redirecting);
return AST_MODULE_LOAD_SUCCESS;
}
static int unload_module(void)
{
ast_sip_session_unregister_supplement(&diversion_supplement);
ast_sip_session_unregister_supplement(&diversion_supplement_media);
ast_sip_session_unregister_supplement(&diversion_supplement_redirecting);
return 0;
}