Asterisk Release 18.21.0
The Asterisk Development Team would like to announce
the release of asterisk-18.21.0.
The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/18.21.0
and https://downloads.asterisk.org/pub/telephony/asterisk
This release resolves issues reported by the community
and would have not been possible without your participation.
Thank You!
Change Log for Release asterisk-18.21.0
========================================
Links:
—————————————-
– [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-18.21.0.md)
– [GitHub Diff](https://github.com/asterisk/asterisk/compare/18.20.2…18.21.0)
– [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18.21.0.tar.gz)
– [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
Summary:
—————————————-
– logger: Fix linking regression.
– Revert “core & res_pjsip: Improve topology change handling.”
– menuselect: Use more specific error message.
– res_pjsip_nat: Fix potential use of uninitialized transport details
– app_if: Fix faulty EndIf branching.
– manager.c: Fix regression due to using wrong free function.
– config_options.c: Fix truncation of option descriptions.
– manager.c: Improve clarity of “manager show connected”.
– make_xml_documentation: Really collect LOCAL_MOD_SUBDIRS documentation.
– general: Fix broken links.
– MergeApproved.yml: Remove unneeded concurrency
– app_dial: Add option “j” to preserve initial stream topology of caller
– ast_coredumper: Increase reliability
– logger.c: Move LOG_GROUP documentation to dedicated XML file.
– res_odbc.c: Allow concurrent access to request odbc connections
– res_pjsip_header_funcs.c: Check URI parameter length before copying.
– config.c: Log #exec include failures.
– make_xml_documentation: Properly handle absolute LOCAL_MOD_SUBDIRS.
– app_voicemail.c: Completely resequence mailbox folders.
– sig_analog: Fix channel leak when mwimonitor is enabled.
– res_rtp_asterisk.c: Update for OpenSSL 3+.
– alembic: Update list of TLS methods available on ps_transports.
– func_channel: Expose previously unsettable options.
– app.c: Allow ampersands in playback lists to be escaped.
– uri.c: Simplify ast_uri_make_host_with_port()
– func_curl.c: Remove CURLOPT() plaintext documentation.
– res_http_websocket.c: Set hostname on client for certificate validation.
– live_ast: Add astcachedir to generated asterisk.conf.
– SECURITY.md: Update with correct documentation URL
– func_lock: Add missing see-also refs to documentation.
– app_followme.c: Grab reference on nativeformats before using it
– configs: Improve documentation for bandwidth in iax.conf.
– logger: Add channel-based filtering.
– chan_iax2.c: Don’t send unsanitized data to the logger.
– codec_ilbc: Disable system ilbc if version >= 3.0.0
– resource_channels.c: Explicit codec request when creating UnicastRTP.
– doc: Update IP Quality of Service links.
– chan_pjsip: Add PJSIPHangup dialplan app and manager action
– chan_iax2.c: Ensure all IEs are displayed when dumping frame contents.
– chan_dahdi: Warn if nonexistent cadence is requested.
– stasis: Update the snapshot after setting the redirect
– ari: Provide the caller ID RDNIS for the channels
– main/utils: Implement ast_get_tid() for OpenBSD
– res_rtp_asterisk.c: Fix runtime issue with LibreSSL
– app_directory: Add ADSI support to Directory.
– core_local: Fix local channel parsing with slashes.
– Remove files that are no longer updated
– app_voicemail: Add AMI event for mailbox PIN changes.
– app_queue.c: Emit unpause reason with PauseQueueMember event.
– bridge_simple: Suppress unchanged topology change requests
– res_pjsip: Include cipher limit in config error message.
– res_speech: allow speech to translate input channel
– res_rtp_asterisk.c: Fix memory leak in ephemeral certificate creation.
– res_pjsip_dtmf_info.c: Add ‘INFO’ to Allow header.
– api.wiki.mustache: Fix indentation in generated markdown
– pjsip_configuration.c: Disable DTLS renegotiation if WebRTC is enabled.
– configs: Fix typo in pjsip.conf.sample.
– res_pjsip_exten_state,res_pjsip_mwi: Allow unload on shutdown
– res_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
– .github: PRSubmitActions: Fix adding reviewers to PR
– .github: New PR Submit workflows
– .github: New PR Submit workflows
– res_stasis: signal when new command is queued
– ari/stasis: Indicate progress before playback on a bridge
– func_curl.c: Ensure channel is locked when manipulating datastores.
– .github: Fix job prereqs in PROpenedUpdated
– .github: Block PR tests until approved
– 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
– chan_dahdi: Clarify scope of callgroup/pickupgroup.
– func_json: Fix crashes for some types
– res_speech_aeap: add aeap error handling
– app_voicemail: Disable ADSI if unavailable.
– codec_builtin: Use multiples of 20 for maximum_ms
– lock.c: Separate DETECT_DEADLOCKS from DEBUG_THREADS
– asterisk.c: Use the euid’s home directory to read/write cli history
– res_pjsip_transport_websocket: Prevent transport from being destroyed before message finishes.
– cel: add publish user event helper
– chan_console: Fix deadlock caused by unclean thread exit.
– file.c: Add ability to search custom dir for sounds
– chan_iax2: Improve authentication debugging.
– res_rtp_asterisk: fix wrong counter management in ioqueue objects
– make_buildopts_h, et. al. Allow adding all cflags to buildopts.h
– func_periodic_hook: Add hangup step to avoid timeout
– res_stasis_recording.c: Save recording state when unmuted.
– res_speech_aeap: check for null format on response
– func_periodic_hook: Don’t truncate channel name
– safe_asterisk: Change directory permissions to 755
– chan_rtp: Implement RTP glue for UnicastRTP channels
– app_queue: periodic announcement configurable start time.
– variables: Add additional variable dialplan functions.
– Restore CHANGES and UPGRADE.txt to allow cherry-picks to work
User Notes:
—————————————-
– ### app_dial: Add option “j” to preserve initial stream topology of caller
The option “j” is now available for the Dial application which
uses the initial stream topology of the caller to create the outgoing
channels.
– ### logger: Add channel-based filtering.
The console log can now be filtered by
channels or groups of channels, using the
logger filter CLI commands.
– ### 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.
– ### app_voicemail: Add AMI event for mailbox PIN changes.
The VoicemailPasswordChange event is
now emitted whenever a mailbox password is updated,
containing the mailbox information and the new
password.
Resolves: #398
– ### 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_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
With this update, the PJSIP realm lengths have been extended
to support up to 255 characters.
– ### 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/
– ### 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.
– ### chan_rtp: Implement RTP glue for UnicastRTP channels
The dial string option ‘g’ was added to the UnicastRTP channel
which enables RTP glue and therefore native RTP bridges with those
channels.
– ### app_queue: periodic announcement configurable start time.
Introduce a new queue configuration option called
‘periodic-announce-startdelay’ which will vary the normal (historic)
behavior of starting the periodic announcement cycle at
periodic-announce-frequency seconds after entering the queue to start
the periodic announcement cycle at period-announce-startdelay seconds
after joining the queue. The default behavior if this config option is
not set remains unchanged.
Signed-off-by: Jaco Kroon
– ### 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.
Upgrade Notes:
—————————————-
– ### app.c: Allow ampersands in playback lists to be escaped.
Ampersands in URLs passed to the `Playback()`,
`Background()`, `SpeechBackground()`, `Read()`, `Authenticate()`, or
`Queue()` applications as filename arguments can now be escaped by
single quoting the filename. Additionally, this is also possible when
using the `CONFBRIDGE` dialplan function, or configuring various
features in `confbridge.conf` and `queues.conf`.
– ### pjsip_configuration.c: Disable DTLS renegotiation if WebRTC is enabled.
The dtls_rekey will be disabled if webrtc support is
requested on an endpoint. A warning will also be emitted.
– ### res_pjsip: Expanding PJSIP endpoint ID and relevant resource length to 255 characters
As part of this update, the maximum allowable length
for PJSIP endpoints and relevant resources has been increased from
40 to 255 characters. To take advantage of this enhancement, it is
recommended to run the necessary procedures (e.g., Alembic) to
update your schemas.
Closed Issues:
—————————————-
– #84: [bug]: codec_ilbc: Fails to build with ilbc version 3.0.4
– #129: [bug]: res_speech_aeap: Crash due to NULL format on setup
– #242: [new-feature]: logger: Allow filtering logs in CLI by channel
– #248: [bug]: core_local: Local channels cannot have slashes in the destination
– #260: [bug]: maxptime must be changed to multiples of 20
– #286: [improvement]: chan_iax2: Improve authentication debugging
– #289: [new-feature]: Add support for deleting channel and global variables
– #294: [improvement]: chan_dahdi: Improve call pickup documentation
– #298: [improvement]: chan_rtp: Implement RTP glue
– #301: [bug]: Number of ICE TURN threads continually growing
– #303: [bug]: SpeechBackground never exits
– #308: [bug]: chan_console: Deadlock when hanging up console channels
– #315: [improvement]: Search /var/lib/asterisk/sounds/custom for sound files before /var/lib/asterisk/sounds/
– #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
– #337: [bug]: asterisk.c: The CLI history file is written to the wrong directory in some cases
– #341: [bug]: app_if.c : nested EndIf incorrectly exits parent If
– #345: [improvement]: Increase pj_sip Realm Size to 255 Characters for Improved Functionality
– #349: [improvement]: Add libjwt to third-party
– #352: [bug]: Update qualify_timeout documentation to include DNS note
– #354: [improvement]: app_voicemail: Disable ADSI if unavailable on a line
– #356: [new-feature]: app_directory: Add ADSI support.
– #360: [improvement]: Update documentation for CHANGES/UPGRADE files
– #362: [improvement]: Speed up ARI command processing
– #379: [bug]: Orphaned taskprocessors cause shutdown delays
– #384: [bug]: Unnecessary re-INVITE after answer
– #388: [bug]: Crash in app_followme.c due to not acquiring a reference to nativeformats
– #396: [improvement]: res_pjsip: Specify max ciphers allowed if too many provided
– #398: [new-feature]: app_voicemail: Add AMI event for password change
– #409: [improvement]: chan_dahdi: Emit warning if specifying nonexistent cadence
– #423: [improvement]: func_lock: Add missing see-also refs
– #425: [improvement]: configs: Improve documentation for bandwidth in iax.conf.sample
– #428: [bug]: cli: Output is truncated from “config show help”
– #430: [bug]: Fix broken links
– #442: [bug]: func_channel: Some channel options are not settable
– #445: [bug]: ast_coredumper isn’t figuring out file locations properly in all cases
– #458: [bug]: Memory leak in chan_dahdi when mwimonitor=yes on FXO
– #462: [new-feature]: app_dial: Add new option to preserve initial stream topology of caller
– #465: [improvement]: Change res_odbc connection pool request logic to not lock around blocking operations
– #482: [improvement]: manager.c: Improve clarity of “manager show connected” output
– #509: [bug]: res_pjsip: Crash when looking up transport state in use
– #513: [bug]: manager.c: Crash due to regression using wrong free function when built with MALLOC_DEBUG
– #520: [improvement]: menuselect: Use more specific error message.
– #530: [bug]: bridge_channel.c: Stream topology change amplification with multiple layers of Local channels
– #539: [bug]: Existence of logger.xml causes linking failure
—