]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Update for 21.5.0-rc1 21.5.0-rc1
authorAsterisk Development Team <asteriskteam@digium.com>
Thu, 12 Sep 2024 18:46:30 +0000 (18:46 +0000)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 12 Sep 2024 18:46:30 +0000 (18:46 +0000)
.version
CHANGES.md
ChangeLogs/ChangeLog-21.5.0-rc1.md [new file with mode: 0644]
contrib/realtime/mysql/mysql_config.sql
contrib/realtime/postgresql/postgresql_config.sql

index 681355da9ff7548ebd83605fb94feb62b34dd0a1..472bc7f11c25e2a4dfee60ba954d899821ea37e0 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-21.4.3
+21.5.0-rc1
index d2f90c79fa01683ef96cad426dab20eb0484998e..b13c9a34696a2a553cd38cde338599f6c555044d 120000 (symlink)
@@ -1 +1 @@
-ChangeLogs/ChangeLog-21.4.3.md
\ No newline at end of file
+ChangeLogs/ChangeLog-21.5.0-rc1.md
\ No newline at end of file
diff --git a/ChangeLogs/ChangeLog-21.5.0-rc1.md b/ChangeLogs/ChangeLog-21.5.0-rc1.md
new file mode 100644 (file)
index 0000000..d0233ad
--- /dev/null
@@ -0,0 +1,489 @@
+
+## Change Log for Release asterisk-21.5.0-rc1
+
+### Links:
+
+ - [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-21.5.0-rc1.md)  
+ - [GitHub Diff](https://github.com/asterisk/asterisk/compare/21.4.3...21.5.0-rc1)  
+ - [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21.5.0-rc1.tar.gz)  
+ - [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)  
+
+### Summary:
+
+- Commits: 21
+- Commit Authors: 8
+- Issues Resolved: 14
+- Security Advisories Resolved: 0
+
+### 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.
+
+- #### res_pjsip_config_wizard.c: Refactor load process                                
+  The res_pjsip_config_wizard.so module can now be reloaded.
+
+
+### 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:
+
+- Alexei Gradinari: (2)
+- Ben Ford: (1)
+- Cade Parker: (1)
+- George Joseph: (8)
+- Jaco Kroon: (1)
+- Mike Bradeen: (3)
+- Sean Bright: (2)
+- Tinet-Mucw: (3)
+
+## Issue and Commit Detail:
+
+### Closed Issues:
+
+  - 740: [new-feature]: Add multi-tenant identifier to chan_pjsip
+  - 763: [bug]: autoservice thread stuck in an endless sleep
+  - 780: [bug]: Infinite loop of "Indicated Video Update", max CPU usage
+  - 799: [improvement]: Add PJSIPNOTIFY dialplan application
+  - 801: [bug]: res_stasis: Occasional 200ms delay adding channel to a bridge
+  - 809: [bug]: CLI stir_shaken show verification kills asterisk
+  - 816: [bug]: res_pjsip_config_wizard doesn't load properly if res_pjsip is loaded first
+  - 845: [bug]: Buffer overflow in handling of security mechanisms in res_pjsip 
+  - 847: [bug]: Asterisk not using negotiated fall-back 8K digits
+  - 854: [bug]:  wrong properties in stir_shaken.conf.sample
+  - 856: [bug]: res_pjsip_sdp_rtp leaks astobj2 ast_format 
+  - 861: [bug]: ChanSpy unable to read audiohook read direction frame when no packet lost on both side of the call
+  - 876: [bug]: ChanSpy unable to write whisper_audiohook when set flag OPTION_READONLY
+  - 879: [bug]: res_stir_shaken/verification.c: Getting verification errors when global_disable=yes
+
+### Commits By Author:
+
+- #### Alexei Gradinari (2):
+  - res_pjsip_sdp_rtp fix leaking astobj2 ast_format
+  - autoservice: Do not sleep if autoservice_stop is called within autoservice thr..
+
+- #### Ben Ford (1):
+  - channel: Add multi-tenant identifier.
+
+- #### Cade Parker (1):
+  - chan_mobile: decrease CHANNEL_FRAME_SIZE to prevent delay
+
+- #### George Joseph (8):
+  - bridge_softmix: Fix queueing VIDUPDATE control frames
+  - res_pjsip_config_wizard.c: Refactor load process
+  - stir_shaken: CRL fixes and a new CLI command
+  - manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
+  - stir_shaken.conf.sample: Fix bad references to private_key_path
+  - security_agreements.c: Refactor the to_str functions and fix a few other bugs
+  - app_voicemail: Use ast_asprintf to create mailbox SQL query
+  - res_stir_shaken: Check for disabled before param validation
+
+- #### Jaco Kroon (1):
+  - configure:  Use . file rather than source file.
+
+- #### Mike Bradeen (3):
+  - res_stasis: fix intermittent delays on adding channel to bridge
+  - res_pjsip_notify: add dialplan application
+  - res_pjsip_sdp_rtp: Use negotiated DTMF Payload types on bitrate mismatch
+
+- #### Sean Bright (2):
+  - alembic: Make 'revises' header comment match reality.
+  - res_pjsip_logger.c: Fix 'OPTIONS' tab completion.
+
+- #### Tinet-mucw (3):
+  - res_pjsip_sdp_rtp.c: Fix DTMF Handling in Re-INVITE with dtmf_mode set to auto
+  - app_chanspy.c: resolving the issue with audiohook direction read
+  - app_chanspy.c: resolving the issue writing frame to whisper audiohook.
+
+
+### Commit List:
+
+-  res_stir_shaken: Check for disabled before param validation
+-  app_chanspy.c: resolving the issue writing frame to whisper audiohook.
+-  app_voicemail: Use ast_asprintf to create mailbox SQL query
+-  res_pjsip_sdp_rtp: Use negotiated DTMF Payload types on bitrate mismatch
+-  app_chanspy.c: resolving the issue with audiohook direction read
+-  security_agreements.c: Refactor the to_str functions and fix a few other bugs
+-  res_pjsip_sdp_rtp fix leaking astobj2 ast_format
+-  stir_shaken.conf.sample: Fix bad references to private_key_path
+-  res_pjsip_logger.c: Fix 'OPTIONS' tab completion.
+-  alembic: Make 'revises' header comment match reality.
+-  chan_mobile: decrease CHANNEL_FRAME_SIZE to prevent delay
+-  res_pjsip_notify: add dialplan application
+-  manager.c: Fix FRACK when doing CoreShowChannelMap in DEVMODE
+-  channel: Add multi-tenant identifier.
+-  configure:  Use . file rather than source file.
+-  res_stasis: fix intermittent delays on adding channel to bridge
+-  res_pjsip_sdp_rtp.c: Fix DTMF Handling in Re-INVITE with dtmf_mode set to auto
+-  stir_shaken: CRL fixes and a new CLI command
+-  res_pjsip_config_wizard.c: Refactor load process
+-  bridge_softmix: Fix queueing VIDUPDATE control frames
+
+### Commit Details:
+
+#### res_stir_shaken: Check for disabled before param validation
+  Author: George Joseph
+  Date:   2024-09-11
+
+  For both attestation and verification, we now check whether they've
+  been disabled either globally or by the profile before validating
+  things like callerid, orig_tn, dest_tn, etc.  This prevents useless
+  error messages.
+
+  Resolves: #879
+
+#### app_chanspy.c: resolving the issue writing frame to whisper audiohook.
+  Author: Tinet-mucw
+  Date:   2024-09-10
+
+  ChanSpy(${channel}, qEoSw): because flags set o, ast_audiohook_set_frame_feed_direction(audiohook, AST_AUDIOHOOK_DIRECTION_READ); this will effect whisper audiohook and spy audiohook, this makes writing frame to whisper audiohook impossible. So add function start_whispering to starting whisper audiohook.
+
+  Resolves: #876
+
+#### autoservice: Do not sleep if autoservice_stop is called within autoservice thr..
+  Author: Alexei Gradinari
+  Date:   2024-09-04
+
+  It's possible that ast_autoservice_stop is called within the autoservice thread.
+  In this case the autoservice thread is stuck in an endless sleep.
+
+  To avoid endless sleep ast_autoservice_stop must check that it's not called
+  within the autoservice thread.
+
+  Fixes: #763
+
+#### app_voicemail: Use ast_asprintf to create mailbox SQL query
+  Author: George Joseph
+  Date:   2024-09-03
+
+  ...instead of trying to calculate the length of the buffer needed
+  manually.
+
+
+#### res_pjsip_sdp_rtp: Use negotiated DTMF Payload types on bitrate mismatch
+  Author: Mike Bradeen
+  Date:   2024-08-21
+
+  When Asterisk sends an offer to Bob that includes 48K and 8K codecs with
+  matching 4733 offers, Bob may want to use the 48K audio codec but can not
+  accept 48K digits and so negotiates for a mixed set.
+
+  Asterisk will now check Bob's offer to make sure Bob has indicated this is
+  acceptible and if not, will use Bob's preference.
+
+  Fixes: #847
+
+#### app_chanspy.c: resolving the issue with audiohook direction read
+  Author: Tinet-mucw
+  Date:   2024-08-30
+
+  ChanSpy(${channel}, qEoS): When chanspy spy the direction read, reading frame is often failed when reading direction read audiohook. because chanspy only read audiohook direction read; write_factory_ms will greater than 100ms soon, then ast_slinfactory_flush will being called, then direction read will fail.
+
+  Resolves: #861
+
+#### security_agreements.c: Refactor the to_str functions and fix a few other bugs
+  Author: George Joseph
+  Date:   2024-08-17
+
+  * A static array of security mechanism type names was created.
+
+  * ast_sip_str_to_security_mechanism_type() was refactored to do
+    a lookup in the new array instead of using fixed "if/else if"
+    statments.
+
+  * security_mechanism_to_str() and ast_sip_security_mechanisms_to_str()
+    were refactored to use ast_str instead of a fixed length buffer
+    to store the result.
+
+  * ast_sip_security_mechanism_type_to_str was removed in favor of
+    just referencing the new type name array.  Despite starting with
+    "ast_sip_", it was a static function so removing it doesn't affect
+    ABI.
+
+  * Speaking of "ast_sip_", several other static functions that
+    started with "ast_sip_" were renamed to avoid confusion about
+    their public availability.
+
+  * A few VECTOR free loops were replaced with AST_VECTOR_RESET().
+
+  * Fixed a meomry leak in pjsip_configuration.c endpoint_destructor
+    caused by not calling ast_sip_security_mechanisms_vector_destroy().
+
+  * Fixed a memory leak in res_pjsip_outbound_registration.c
+    add_security_headers() caused by not specifying OBJ_NODATA in
+    an ao2_callback.
+
+  * Fixed a few ao2_callback return code misuses.
+
+  Resolves: #845
+
+#### res_pjsip_sdp_rtp fix leaking astobj2 ast_format
+  Author: Alexei Gradinari
+  Date:   2024-08-23
+
+  PR #700 added a preferred_format for the struct ast_rtp_codecs,
+  but when set the preferred_format it leaks an astobj2 ast_format.
+  In the next code
+  ast_rtp_codecs_set_preferred_format(&codecs, ast_format_cap_get_format(joint, 0));
+  both functions ast_rtp_codecs_set_preferred_format
+  and ast_format_cap_get_format increases the ao2 reference count.
+
+  Fixes: #856
+
+#### stir_shaken.conf.sample: Fix bad references to private_key_path
+  Author: George Joseph
+  Date:   2024-08-22
+
+  They should be private_key_file.
+
+  Resolves: #854
+
+#### res_pjsip_logger.c: Fix 'OPTIONS' tab completion.
+  Author: Sean Bright
+  Date:   2024-08-19
+
+  Fixes #843
+
+
+#### alembic: Make 'revises' header comment match reality.
+  Author: Sean Bright
+  Date:   2024-08-17
+
+
+#### chan_mobile: decrease CHANNEL_FRAME_SIZE to prevent delay
+  Author: Cade Parker
+  Date:   2024-08-07
+
+  On modern Bluetooth devices or lower-powered asterisk servers, decreasing the channel frame size significantly improves latency and delay on outbound calls with only a mild sacrifice to the quality of the call (the frame size before was massive overkill to begin with)
+
+
+#### 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.
+
+
+#### configure:  Use . file rather than source file.
+  Author: Jaco Kroon
+  Date:   2024-08-05
+
+  source is a bash concept, so when /bin/sh points to another shell the
+  existing construct won't work.
+
+  Reference: https://bugs.gentoo.org/927055
+  Signed-off-by: Jaco Kroon <jaco@uls.co.za>
+
+#### 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_sdp_rtp.c: Fix DTMF Handling in Re-INVITE with dtmf_mode set to auto
+  Author: Tinet-mucw
+  Date:   2024-08-02
+
+  When the endpoint dtmf_mode is set to auto, a SIP request is sent to the UAC, and the SIP SDP from the UAC does not include the telephone-event. Later, the UAC sends an INVITE, and the SIP SDP includes the telephone-event. In this case, DTMF should be sent by RFC2833 rather than using inband signaling.
+
+  Resolves: asterisk#826
+
+#### stir_shaken: CRL fixes and a new CLI command
+  Author: George Joseph
+  Date:   2024-07-19
+
+  * Fixed a bug in crypto_show_cli_store that was causing asterisk
+  to crash if there were certificate revocation lists in the
+  verification certificate store.  We're also now prefixing
+  certificates with "Cert:" and CRLs with "CRL:" to distinguish them
+  in the list.
+
+  * Added 'untrusted_cert_file' and 'untrusted_cert_path' options
+  to both verification and profile objects.  If you have CRLs that
+  are signed by a different CA than the incoming X5U certificate
+  (indirect CRL), you'll need to provide the certificate of the
+  CRL signer here.  Thse will show up as 'Untrusted" when showing
+  the verification or profile objects.
+
+  * Fixed loading of crl_path.  The OpenSSL API we were using to
+  load CRLs won't actually load them from a directory, only a file.
+  We now scan the directory ourselves and load the files one-by-one.
+
+  * Fixed the verification flags being set on the certificate store.
+    - Removed the CRL_CHECK_ALL flag as this was causing all certificates
+      to be checked for CRL extensions and failing to verify the cert if
+      there was none.  This basically caused all certs to fail when a CRL
+      was provided via crl_file or crl_path.
+    - Added the EXTENDED_CRL_SUPPORT flag as it is required to handle
+      indirect CRLs.
+
+  * Added a new CLI command...
+  `stir_shaken verify certificate_file <certificate_file> [ <profile> ]`
+  which will assist troubleshooting certificate problems by allowing
+  the user to manually verify a certificate file against either the
+  global verification certificate store or the store for a specific
+  profile.
+
+  * Updated the XML documentation and the sample config file.
+
+  Resolves: #809
+
+#### 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.
+
+#### 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
+
index cd0b80538e4066a39fc92130dbf55d4ea1fa0cd8..8072dfb4df041f9f7ecde70e1a158dfb48a451eb 100644 (file)
@@ -1695,3 +1695,9 @@ ALTER TABLE queues ADD COLUMN log_restricted_caller_id ENUM('0','1','off','on','
 
 UPDATE alembic_version SET version_num='2b7c507d7d12' WHERE alembic_version.version_num = 'bd9c5159c7ea';
 
+-- Running upgrade 2b7c507d7d12 -> 655054a68ad5
+
+ALTER TABLE ps_endpoints ADD COLUMN tenantid VARCHAR(80);
+
+UPDATE alembic_version SET version_num='655054a68ad5' WHERE alembic_version.version_num = '2b7c507d7d12';
+
index 47b46ecef2a164ebdbed12a6dba1e1d03ae7ed78..86773942770c807d1cd4cd4aea8eadc8b8d54282 100644 (file)
@@ -1819,5 +1819,11 @@ ALTER TABLE queues ADD COLUMN log_restricted_caller_id ast_bool_values;
 
 UPDATE alembic_version SET version_num='2b7c507d7d12' WHERE alembic_version.version_num = 'bd9c5159c7ea';
 
+-- Running upgrade 2b7c507d7d12 -> 655054a68ad5
+
+ALTER TABLE ps_endpoints ADD COLUMN tenantid VARCHAR(80);
+
+UPDATE alembic_version SET version_num='655054a68ad5' WHERE alembic_version.version_num = '2b7c507d7d12';
+
 COMMIT;