mirror of https://github.com/asterisk/asterisk
parent
19bbcf0bbf
commit
ae55f7f942
@ -1 +1 @@
|
||||
ChangeLogs/ChangeLog-20.8.1.md
|
||||
ChangeLogs/ChangeLog-20.9.0-rc1.md
|
@ -0,0 +1,461 @@
|
||||
|
||||
## Change Log for Release asterisk-20.9.0-rc1
|
||||
|
||||
### Links:
|
||||
|
||||
- [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.9.0-rc1.md)
|
||||
- [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.8.1...20.9.0-rc1)
|
||||
- [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.9.0-rc1.tar.gz)
|
||||
- [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)
|
||||
|
||||
### Summary:
|
||||
|
||||
- Commits: 20
|
||||
- Commit Authors: 9
|
||||
- Issues Resolved: 8
|
||||
- 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.
|
||||
|
||||
- #### app_queue: Add option to not log Restricted Caller ID to queue_log
|
||||
Add a Queue option log-restricted-caller-id to control whether the Restricted Caller ID
|
||||
will be stored in the queue log.
|
||||
If log-restricted-caller-id=no then the Caller ID will be stripped if the Caller ID is restricted.
|
||||
|
||||
- #### pbx.c: expand fields width of "core show hints"
|
||||
The fields width of "core show hints" were increased.
|
||||
The width of "extension" field to 30 characters and
|
||||
the width of the "device state id" field to 60 characters.
|
||||
|
||||
- #### rtp_engine: add support for multirate RFC2833 digits
|
||||
No change in configuration is required in order to enable this
|
||||
feature. Endpoints configured to use RFC2833 will automatically have this
|
||||
enabled. If the endpoint does not support this, it should not include it in
|
||||
the SDP offer/response.
|
||||
Resolves: #699
|
||||
|
||||
|
||||
### Upgrade Notes:
|
||||
|
||||
- #### app_queue: Add option to not log Restricted Caller ID to queue_log
|
||||
Add a new column to the queues table:
|
||||
queue_log_option_log_restricted ENUM('0','1','off','on','false','true','no','yes')
|
||||
to control whether the Restricted Caller ID will be stored in the queue log.
|
||||
|
||||
|
||||
### Commit Authors:
|
||||
|
||||
- Alexei Gradinari: (2)
|
||||
- Bastian Triller: (1)
|
||||
- Chrsmj: (1)
|
||||
- George Joseph: (4)
|
||||
- Igor Goncharovsky: (1)
|
||||
- Mike Bradeen: (2)
|
||||
- Sean Bright: (7)
|
||||
- Tinet-Mucw: (1)
|
||||
- Walter Doekes: (1)
|
||||
|
||||
## Issue and Commit Detail:
|
||||
|
||||
### Closed Issues:
|
||||
|
||||
- 699: [improvement]: Add support for multi-rate DTMF
|
||||
- 736: [bug]: Seg fault on CLI after PostgreSQL CDR module fails to load for a second time
|
||||
- 765: [improvement]: Add option to not log Restricted Caller ID to queue_log
|
||||
- 770: [improvement]: pbx.c: expand fields width of "core show hints"
|
||||
- 776: [bug] DTMF broken after rtp_engine: add support for multirate RFC2833 digits commit
|
||||
- 783: [bug]: Under certain circumstances a channel snapshot can get orphaned in the cache
|
||||
- 789: [bug]: Mediasec headers aren't sent on outgoing INVITEs
|
||||
- 797: [bug]:
|
||||
|
||||
### Commits By Author:
|
||||
|
||||
- ### Alexei Gradinari (2):
|
||||
- pbx.c: expand fields width of "core show hints"
|
||||
- app_queue: Add option to not log Restricted Caller ID to queue_log
|
||||
|
||||
- ### Bastian Triller (1):
|
||||
- cli: Show configured cache dir
|
||||
|
||||
- ### George Joseph (4):
|
||||
- app_voicemail_odbc: Allow audio to be kept on disk
|
||||
- stasis_channels: Use uniqueid and name to delete old snapshots
|
||||
- security_agreement.c: Always add the Require and Proxy-Require headers
|
||||
- ast-db-manage: Remove duplicate enum creation
|
||||
|
||||
- ### Igor Goncharovsky (1):
|
||||
- res_pjsip_path.c: Fix path when dialing using PJSIP_DIAL_CONTACTS()
|
||||
|
||||
- ### Mike Bradeen (2):
|
||||
- rtp_engine: add support for multirate RFC2833 digits
|
||||
- res_pjsip_sdp_rtp: Add support for default/mismatched 8K RFC 4733/2833 digits
|
||||
|
||||
- ### Sean Bright (7):
|
||||
- file.h: Rename function argument to avoid C++ keyword clash.
|
||||
- bundled_pjproject: Disable UPnP support.
|
||||
- asterisk.c: Don't log an error if .asterisk_history does not exist.
|
||||
- xml.c: Update deprecated libxml2 API usage.
|
||||
- manager.c: Properly terminate `CoreShowChannelMap` event.
|
||||
- pjsip: Add PJSIP_PARSE_URI_FROM dialplan function.
|
||||
- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
|
||||
|
||||
- ### Tinet-mucw (1):
|
||||
- bridge_basic.c: Make sure that ast_bridge_channel is not destroyed while itera..
|
||||
|
||||
- ### Walter Doekes (1):
|
||||
- chan_ooh323: Fix R/0 typo in docs
|
||||
|
||||
- ### chrsmj (1):
|
||||
- cdr_pgsql: Fix crash when the module fails to load multiple times.
|
||||
|
||||
|
||||
### Commit List:
|
||||
|
||||
- res_pjsip_path.c: Fix path when dialing using PJSIP_DIAL_CONTACTS()
|
||||
- res_pjsip_sdp_rtp: Add support for default/mismatched 8K RFC 4733/2833 digits
|
||||
- ast-db-manage: Remove duplicate enum creation
|
||||
- security_agreement.c: Always add the Require and Proxy-Require headers
|
||||
- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
|
||||
- stasis_channels: Use uniqueid and name to delete old snapshots
|
||||
- app_voicemail_odbc: Allow audio to be kept on disk
|
||||
- app_queue: Add option to not log Restricted Caller ID to queue_log
|
||||
- pbx.c: expand fields width of "core show hints"
|
||||
- pjsip: Add PJSIP_PARSE_URI_FROM dialplan function.
|
||||
- manager.c: Properly terminate `CoreShowChannelMap` event.
|
||||
- cli: Show configured cache dir
|
||||
- xml.c: Update deprecated libxml2 API usage.
|
||||
- cdr_pgsql: Fix crash when the module fails to load multiple times.
|
||||
- asterisk.c: Don't log an error if .asterisk_history does not exist.
|
||||
- chan_ooh323: Fix R/0 typo in docs
|
||||
- bundled_pjproject: Disable UPnP support.
|
||||
- file.h: Rename function argument to avoid C++ keyword clash.
|
||||
- rtp_engine: add support for multirate RFC2833 digits
|
||||
|
||||
### Commit Details:
|
||||
|
||||
#### res_pjsip_path.c: Fix path when dialing using PJSIP_DIAL_CONTACTS()
|
||||
Author: Igor Goncharovsky
|
||||
Date: 2024-05-12
|
||||
|
||||
When using the PJSIP_DIAL_CONTACTS() function for use in the Dial()
|
||||
command, the contacts are returned in text form, so the input to
|
||||
the path_outgoing_request() function is a contact value of NULL.
|
||||
The issue was reported in ASTERISK-28211, but was not actually fixed
|
||||
in ASTERISK-30100. This fix brings back the code that was previously
|
||||
removed and adds code to search for a contact to extract the path
|
||||
value from it.
|
||||
|
||||
|
||||
#### res_pjsip_sdp_rtp: Add support for default/mismatched 8K RFC 4733/2833 digits
|
||||
Author: Mike Bradeen
|
||||
Date: 2024-06-21
|
||||
|
||||
After change made in 624f509 to add support for non 8K RFC 4733/2833 digits,
|
||||
Asterisk would only accept RFC 4733/2833 offers that matched the sample rate of
|
||||
the negotiated codec(s).
|
||||
|
||||
This change allows Asterisk to accept 8K RFC 4733/2833 offers if the UAC
|
||||
offfers 8K RFC 4733/2833 but negotiates for a non 8K bitrate codec.
|
||||
|
||||
A number of corresponding tests in tests/channels/pjsip/dtmf_sdp also needed to
|
||||
be re-written to allow for these scenarios.
|
||||
|
||||
Fixes: #776
|
||||
|
||||
#### ast-db-manage: Remove duplicate enum creation
|
||||
Author: George Joseph
|
||||
Date: 2024-07-08
|
||||
|
||||
Remove duplicate creation of ast_bool_values from
|
||||
2b7c507d7d12_add_queue_log_option_log_restricted_.py. This was
|
||||
causing alembic upgrades to fail since the enum was already created
|
||||
in fe6592859b85_fix_mwi_subscribe_replaces_.py back in 2018.
|
||||
|
||||
Resolves: #797
|
||||
|
||||
#### security_agreement.c: Always add the Require and Proxy-Require headers
|
||||
Author: George Joseph
|
||||
Date: 2024-07-03
|
||||
|
||||
The `Require: mediasec` and `Proxy-Require: mediasec` headers need
|
||||
to be sent whenever we send `Security-Client` or `Security-Verify`
|
||||
headers but the logic to do that was only in add_security_headers()
|
||||
in res_pjsip_outbound_register. So while we were sending them on
|
||||
REGISTER requests, we weren't sending them on INVITE requests.
|
||||
|
||||
This commit moves the logic to send the two headers out of
|
||||
res_pjsip_outbound_register:add_security_headers() and into
|
||||
security_agreement:ast_sip_add_security_headers(). This way
|
||||
they're always sent when we send `Security-Client` or
|
||||
`Security-Verify`.
|
||||
|
||||
Resolves: #789
|
||||
|
||||
#### logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds.
|
||||
Author: Sean Bright
|
||||
Date: 2024-06-29
|
||||
|
||||
Fixes #785
|
||||
|
||||
|
||||
#### stasis_channels: Use uniqueid and name to delete old snapshots
|
||||
Author: George Joseph
|
||||
Date: 2024-05-08
|
||||
|
||||
Whenver a new channel snapshot is created or when a channel is
|
||||
destroyed, we need to delete any existing channel snapshot from
|
||||
the snapshot cache. Historically, we used the channel->snapshot
|
||||
pointer to delete any existing snapshots but this has two issues.
|
||||
|
||||
First, if something (possibly ast_channel_internal_swap_snapshots)
|
||||
sets channel->snapshot to NULL while there's still a snapshot in
|
||||
the cache, we wouldn't be able to delete it and it would be orphaned
|
||||
when the channel is destroyed. Since we use the cache to list
|
||||
channels from the CLI, AMI and ARI, it would appear as though the
|
||||
channel was still there when it wasn't.
|
||||
|
||||
Second, since there are actually two caches, one indexed by the
|
||||
channel's uniqueid, and another indexed by the channel's name,
|
||||
deleting from the caches by pointer requires a sequential search of
|
||||
all of the hash table buckets in BOTH caches to find the matching
|
||||
snapshots. Not very efficient.
|
||||
|
||||
So, we now delete from the caches using the channel's uniqueid
|
||||
and name. This solves both issues.
|
||||
|
||||
This doesn't address how channel->snapshot might have been set
|
||||
to NULL in the first place because although we have concrete
|
||||
evidence that it's happening, we haven't been able to reproduce it.
|
||||
|
||||
Resolves: #783
|
||||
|
||||
#### 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.
|
||||
|
||||
|
||||
#### bridge_basic.c: Make sure that ast_bridge_channel is not destroyed while itera..
|
||||
Author: Tinet-mucw
|
||||
Date: 2024-06-13
|
||||
|
||||
Resolves: https://github.com/asterisk/asterisk/issues/768
|
||||
|
||||
#### app_queue: Add option to not log Restricted Caller ID to queue_log
|
||||
Author: Alexei Gradinari
|
||||
Date: 2024-06-12
|
||||
|
||||
Add a queue option log-restricted-caller-id to strip the Caller ID when storing the ENTERQUEUE event
|
||||
in the queue log if the Caller ID is restricted.
|
||||
|
||||
Resolves: #765
|
||||
|
||||
UpgradeNote: Add a new column to the queues table:
|
||||
queue_log_option_log_restricted ENUM('0','1','off','on','false','true','no','yes')
|
||||
to control whether the Restricted Caller ID will be stored in the queue log.
|
||||
|
||||
UserNote: Add a Queue option log-restricted-caller-id to control whether the Restricted Caller ID
|
||||
will be stored in the queue log.
|
||||
If log-restricted-caller-id=no then the Caller ID will be stripped if the Caller ID is restricted.
|
||||
|
||||
|
||||
#### pbx.c: expand fields width of "core show hints"
|
||||
Author: Alexei Gradinari
|
||||
Date: 2024-06-13
|
||||
|
||||
The current width for "extension" is 20 and "device state id" is 20, which is too small.
|
||||
The "extension" field contains "ext"@"context", so 20 characters is not enough.
|
||||
The "device state id" field, for example for Queue pause state contains Queue:"queue_name"_pause_PSJIP/"endpoint", so the 20 characters is not enough.
|
||||
|
||||
Increase the width of "extension" field to 30 characters and the width of the "device state id" field to 60 characters.
|
||||
|
||||
Resolves: #770
|
||||
|
||||
UserNote: The fields width of "core show hints" were increased.
|
||||
The width of "extension" field to 30 characters and
|
||||
the width of the "device state id" field to 60 characters.
|
||||
|
||||
|
||||
#### pjsip: Add PJSIP_PARSE_URI_FROM dialplan function.
|
||||
Author: Sean Bright
|
||||
Date: 2024-06-02
|
||||
|
||||
Various SIP headers permit a URI to be prefaced with a `display-name`
|
||||
production that can include characters (like commas and parentheses)
|
||||
that are problematic for Asterisk's dialplan parser and, specifically
|
||||
in the case of this patch, the PJSIP_PARSE_URI function.
|
||||
|
||||
This patch introduces a new function - `PJSIP_PARSE_URI_FROM` - that
|
||||
behaves identically to `PJSIP_PARSE_URI` except that the first
|
||||
argument is now a variable name and not a literal URI.
|
||||
|
||||
Fixes #756
|
||||
|
||||
|
||||
#### manager.c: Properly terminate `CoreShowChannelMap` event.
|
||||
Author: Sean Bright
|
||||
Date: 2024-06-10
|
||||
|
||||
Fixes #761
|
||||
|
||||
|
||||
#### cli: Show configured cache dir
|
||||
Author: Bastian Triller
|
||||
Date: 2024-06-07
|
||||
|
||||
Since Asterisk 19 it is possible to cache recorded files into another
|
||||
directory [1] [2].
|
||||
Show configured location of cache dir in CLI's core show settings.
|
||||
|
||||
[1] ASTERISK-29143
|
||||
[2] b08427134fd51bb549f198e9f60685f2680c68d7
|
||||
|
||||
|
||||
#### 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
|
||||
|
||||
|
||||
#### cdr_pgsql: Fix crash when the module fails to load multiple times.
|
||||
Author: chrsmj
|
||||
Date: 2024-05-16
|
||||
|
||||
Missing or corrupt cdr_pgsql.conf configuration file can cause the
|
||||
second attempt to load the PostgreSQL CDR module to crash Asterisk via
|
||||
the Command Line Interface because a null CLI command is registered on
|
||||
the first failed attempt to load the module.
|
||||
|
||||
Resolves: #736
|
||||
|
||||
#### asterisk.c: Don't log an error if .asterisk_history does not exist.
|
||||
Author: Sean Bright
|
||||
Date: 2024-05-27
|
||||
|
||||
Fixes #751
|
||||
|
||||
|
||||
#### chan_ooh323: Fix R/0 typo in docs
|
||||
Author: Walter Doekes
|
||||
Date: 2024-05-27
|
||||
|
||||
|
||||
#### bundled_pjproject: Disable UPnP support.
|
||||
Author: Sean Bright
|
||||
Date: 2024-05-24
|
||||
|
||||
Fixes #747
|
||||
|
||||
|
||||
#### file.h: Rename function argument to avoid C++ keyword clash.
|
||||
Author: Sean Bright
|
||||
Date: 2024-05-24
|
||||
|
||||
Fixes #744
|
||||
|
||||
|
||||
#### rtp_engine: add support for multirate RFC2833 digits
|
||||
Author: Mike Bradeen
|
||||
Date: 2024-04-08
|
||||
|
||||
Add RFC2833 DTMF support for 16K, 24K, and 32K bitrate codecs.
|
||||
|
||||
Asterisk currently treats RFC2833 Digits as a single rtp payload type
|
||||
with a fixed bitrate of 8K. This change would expand that to 8, 16,
|
||||
24 and 32K.
|
||||
|
||||
This requires checking the offered rtp types for any of these bitrates
|
||||
and then adding an offer for each (if configured for RFC2833.) DTMF
|
||||
generation must also be changed in order to look at the current outbound
|
||||
codec in order to generate appropriately timed rtp.
|
||||
|
||||
For cases where no outgoing audio has yet been sent prior to digit
|
||||
generation, Asterisk now has a concept of a 'preferred' codec based on
|
||||
offer order.
|
||||
|
||||
On inbound calls Asterisk will mimic the payload types of the RFC2833
|
||||
digits.
|
||||
|
||||
On outbound calls Asterisk will choose the next free payload types starting
|
||||
with 101.
|
||||
|
||||
UserNote: No change in configuration is required in order to enable this
|
||||
feature. Endpoints configured to use RFC2833 will automatically have this
|
||||
enabled. If the endpoint does not support this, it should not include it in
|
||||
the SDP offer/response.
|
||||
|
||||
Resolves: #699
|
||||
|
Loading…
Reference in new issue