]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Update for 21.6.0-rc1 21.6.0-rc1
authorAsterisk Development Team <asteriskteam@digium.com>
Thu, 14 Nov 2024 20:01:38 +0000 (20:01 +0000)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 14 Nov 2024 20:01:38 +0000 (20:01 +0000)
.version
CHANGES.md
ChangeLogs/ChangeLog-21.6.0-rc1.md [new file with mode: 0644]
contrib/realtime/mysql/mysql_config.sql
contrib/realtime/mysql/mysql_voicemail.sql
contrib/realtime/postgresql/postgresql_config.sql
contrib/realtime/postgresql/postgresql_voicemail.sql

index 24c71f3db6c6ea083523680b7158a9d4a04be9b4..be5e329e24e06c3502bff8170657a14cd2b089c5 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-21.5.0
+21.6.0-rc1
index e5eba0d5fe35d676d86929f99747c2858da69efa..eeda0ea82523320a5f5db5d345620c57c091f568 120000 (symlink)
@@ -1 +1 @@
-ChangeLogs/ChangeLog-21.5.0.md
\ No newline at end of file
+ChangeLogs/ChangeLog-21.6.0-rc1.md
\ No newline at end of file
diff --git a/ChangeLogs/ChangeLog-21.6.0-rc1.md b/ChangeLogs/ChangeLog-21.6.0-rc1.md
new file mode 100644 (file)
index 0000000..40a0f51
--- /dev/null
@@ -0,0 +1,741 @@
+
+## Change Log for Release asterisk-21.6.0-rc1
+
+### Links:
+
+ - [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-21.6.0-rc1.md)  
+ - [GitHub Diff](https://github.com/asterisk/asterisk/compare/21.5.0...21.6.0-rc1)  
+ - [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21.6.0-rc1.tar.gz)  
+ - [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk)  
+
+### Summary:
+
+- Commits: 38
+- Commit Authors: 9
+- Issues Resolved: 21
+- 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.
+
+- #### manager.c: Restrict ModuleLoad to the configured modules directory.             
+  The ModuleLoad AMI action now restricts modules to the
+  configured modules directory.
+
+- #### manager: Enhance event filtering for performance                                
+  You can now perform more granular filtering on events
+  in manager.conf using expressions like
+  `eventfilter(name(Newchannel),header(Channel),method(starts_with)) = PJSIP/`
+  This is much more efficient than
+  `eventfilter = Event: Newchannel.*Channel: PJSIP/`
+  Full syntax guide is in configs/samples/manager.conf.sample.
+
+- #### db.c: Remove limit on family/key length                                         
+  The `ast_db_*()` APIs have had the 253 byte limit on
+  "/family/key" removed and will now accept families and keys with a
+  total length of up to SQLITE_MAX_LENGTH (currently 1e9!).  This
+  affects the `DB*` dialplan applications, dialplan functions,
+  manager actions and `databse` CLI commands.  Since the
+  media_cache also uses the `ast_db_*()` APIs, you can now store
+  resources with URIs longer than 253 bytes.
+
+
+### Upgrade Notes:
+
+
+### Commit Authors:
+
+- Allan Nathanson: (1)
+- Ben Ford: (3)
+- Chrsmj: (1)
+- George Joseph: (14)
+- Jiangxc: (1)
+- Naveen Albert: (7)
+- Peter Jannesen: (2)
+- Sean Bright: (7)
+- Thomas Guebels: (2)
+
+## Issue and Commit Detail:
+
+### Closed Issues:
+
+  - 487: [bug]: Segfault possibly in ast_rtp_stop
+  - 821: [bug]: app_dial:  The progress timeout doesn't cause Dial to exit
+  - 881: [bug]: Long URLs are being rejected by the media cache because of an astdb key length limit
+  - 882: [bug]: Value CHANNEL(userfield) is lost by BRIDGE_ENTER
+  - 897: [improvement]: Restrict ModuleLoad AMI action to the modules directory
+  - 900: [bug]: astfd.c: NULL pointer passed to fclose with nonnull attribute causes compilation failure
+  - 902: [bug]: app_voicemail: Pager emails are ill-formatted when custom subject is used
+  - 916: [bug]: Compilation errors on FreeBSD
+  - 923: [bug]: Transport monitor shutdown callback only works on the first disconnection
+  - 924: [bug]: dnsmgr.c: dnsmgr_refresh() should not flag change if IP address order changes
+  - 928: [bug]: chan_dahdi: MWI while off-hook when hung up on after recall ring
+  - 932: [bug]: When connected to multiple IP addresses the transport monitor is only set on the first one
+  - 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
+  - 951: [new-feature]: func_evalexten: Add `EVAL_SUB` function
+  - 974: [improvement]: change and/or remove some wiki mentions to docs mentions in the sample configs
+  - 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
+  - 990: [improvement]: The help for PJSIP_AOR should indicate that you need to call PJSIP_CONTACT to get contact details
+
+### Commits By Author:
+
+- #### Allan Nathanson (1):
+  - dnsmgr.c: dnsmgr_refresh() incorrectly flags change with DNS round-robin
+
+- #### Ben Ford (3):
+  - manager.c: Restrict ModuleLoad to the configured modules directory.
+  - app_mixmonitor: Add 'D' option for dual-channel audio.
+  - Add res_pjsip_config_sangoma external module.
+
+- #### George Joseph (14):
+  - db.c: Remove limit on family/key length
+  - manager.c: Split XML documentation to manager_doc.xml
+  - manager: Enhance event filtering for performance
+  - manager.conf.sample: Fix mathcing typo
+  - Fix application references to Background
+  - res_rtp_asterisk: Fix dtls timer issues causing FRACKs and SEGVs
+  - 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()
+  - pjproject_bundled:  Tweaks to support out-of-tree development
+  - res_srtp: Change Unsupported crypto suite msg from verbose to debug
+  - res_pjsip: Move tenantid to end of ast_sip_endpoint
+  - func_pjsip_aor/contact: Fix documentation for contact ID
+  - res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
+
+- #### Naveen Albert (7):
+  - app_voicemail: Fix ill-formatted pager emails with custom subject.
+  - astfd.c: Avoid calling fclose with NULL argument.
+  - main, res, tests: Fix compilation errors on FreeBSD.
+  - chan_dahdi: Never send MWI while off-hook.
+  - app_dial: Fix progress timeout.
+  - app_dial: Fix progress timeout calculation with no answer timeout.
+  - func_evalexten: Add EVAL_SUB function.
+
+- #### Peter Jannesen (2):
+  - cel_custom: Allow absolute filenames.
+  - channel: Preserve CHANNEL(userfield) on masquerade.
+
+- #### Sean Bright (7):
+  - res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
+  - cdr_custom: Allow absolute filenames.
+  - res_agi.c: Ensure SIGCHLD handler functions are properly balanced.
+  - alembic: Drop redundant voicemail_messages index.
+  - func_base64.c: Ensure we set aside enough room for base64 encoded data.
+  - Revert "res_rtp_asterisk: Count a roll-over of the sequence number even on los..
+  - res_pjsip.c: Fix Contact header rendering for IPv6 addresses.
+
+- #### Thomas Guebels (2):
+  - pjsip_transport_events: Avoid monitor destruction
+  - pjsip_transport_events: handle multiple addresses for a domain
+
+- #### chrsmj (1):
+  - samples: remove and/or change some wiki mentions
+
+- #### jiangxc (1):
+  - res_agi.c: Prevent possible double free during `SPEECH RECOGNIZE`
+
+
+### Commit List:
+
+-  res_pjsip: Add new endpoint option "suppress_moh_on_sendonly"
+-  res_pjsip.c: Fix Contact header rendering for IPv6 addresses.
+-  samples: remove and/or change some wiki mentions
+-  func_pjsip_aor/contact: Fix documentation for contact ID
+-  res_pjsip: Move tenantid to end of ast_sip_endpoint
+-  pjsip_transport_events: handle multiple addresses for a domain
+-  func_evalexten: Add EVAL_SUB function.
+-  res_srtp: Change Unsupported crypto suite msg from verbose to debug
+-  Add res_pjsip_config_sangoma external module.
+-  app_mixmonitor: Add 'D' option for dual-channel audio.
+-  pjsip_transport_events: Avoid monitor destruction
+-  app_dial: Fix progress timeout calculation with no answer timeout.
+-  pjproject_bundled:  Tweaks to support out-of-tree development
+-  core_unreal.c: Fix memory leak in ast_unreal_new_channels()
+-  dnsmgr.c: dnsmgr_refresh() incorrectly flags change with DNS round-robin
+-  geolocation.sample.conf: Fix comment marker at end of file
+-  func_base64.c: Ensure we set aside enough room for base64 encoded data.
+-  app_dial: Fix progress timeout.
+-  chan_dahdi: Never send MWI while off-hook.
+-  manager.c: Add unit test for Originate app and appdata permissions
+-  alembic: Drop redundant voicemail_messages index.
+-  res_agi.c: Ensure SIGCHLD handler functions are properly balanced.
+-  main, res, tests: Fix compilation errors on FreeBSD.
+-  res_rtp_asterisk: Fix dtls timer issues causing FRACKs and SEGVs
+-  manager.c: Restrict ModuleLoad to the configured modules directory.
+-  res_agi.c: Prevent possible double free during `SPEECH RECOGNIZE`
+-  cdr_custom: Allow absolute filenames.
+-  astfd.c: Avoid calling fclose with NULL argument.
+-  channel: Preserve CHANNEL(userfield) on masquerade.
+-  cel_custom: Allow absolute filenames.
+-  app_voicemail: Fix ill-formatted pager emails with custom subject.
+-  res_pjsip_pubsub: Persist subscription 'generator_data' in sorcery
+-  Fix application references to Background
+-  manager.conf.sample: Fix mathcing typo
+-  manager: Enhance event filtering for performance
+-  manager.c: Split XML documentation to manager_doc.xml
+-  db.c: Remove limit on family/key length
+
+### Commit Details:
+
+#### 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.c: Fix Contact header rendering for IPv6 addresses.
+  Author: Sean Bright
+  Date:   2024-11-08
+
+  Fix suggested by @nvsystems.
+
+  Fixes #985
+
+
+#### samples: remove and/or change some wiki mentions
+  Author: chrsmj
+  Date:   2024-11-01
+
+  Cleaned some dead links. Replaced word wiki with
+  either docs or link to https://docs.asterisk.org/
+
+  Resolves: #974
+
+#### func_pjsip_aor/contact: Fix documentation for contact ID
+  Author: George Joseph
+  Date:   2024-11-09
+
+  Clarified the use of the contact ID returned from PJSIP_AOR.
+
+  Resolves: #990
+
+#### 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
+
+#### pjsip_transport_events: handle multiple addresses for a domain
+  Author: Thomas Guebels
+  Date:   2024-10-29
+
+  The key used for transport monitors was the remote host name for the
+  transport and not the remote address resolved for this domain.
+
+  This was problematic for domains returning multiple addresses as several
+  transport monitors were created with the same key.
+
+  Whenever a subsystem wanted to register a callback it would always end
+  up attached to the first transport monitor with a matching key.
+
+  The key used for transport monitors is now the remote address and port
+  the transport actually connected to.
+
+  Fixes: #932
+
+#### func_evalexten: Add EVAL_SUB function.
+  Author: Naveen Albert
+  Date:   2024-10-17
+
+  This adds an EVAL_SUB function, which is similar to the existing
+  EVAL_EXTEN function but significantly more powerful, as it allows
+  executing arbitrary dialplan and capturing its return value as
+  the function's output. While EVAL_EXTEN should be preferred if it
+  is possible to use it, EVAL_SUB can be used in a wider variety
+  of cases and allows arbitrary computation to be performed in
+  a dialplan function call, leveraging the dialplan.
+
+  Resolves: #951
+
+#### res_srtp: Change Unsupported crypto suite msg from verbose to debug
+  Author: George Joseph
+  Date:   2024-11-01
+
+  There's really no point in spamming logs with a verbose message
+  for every unsupported crypto suite an older client may send
+  in an SDP.  If none are supported, there will be an error or
+  warning.
+
+
+#### Add res_pjsip_config_sangoma external module.
+  Author: Ben Ford
+  Date:   2024-11-01
+
+  Adds res_pjsip_config_sangoma as an external module that can be
+  downloaded via menuselect. It lives under the Resource Modules section.
+
+
+#### 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.
+
+
+#### pjsip_transport_events: Avoid monitor destruction
+  Author: Thomas Guebels
+  Date:   2024-10-28
+
+  When a transport is disconnected, several events can arrive following
+  each other. The first event will be PJSIP_TP_STATE_DISCONNECT and it
+  will trigger the destruction of the transport monitor object. The lookup
+  for the transport monitor to destroy is done using the transport key,
+  that contains the transport destination host:port.
+
+  A reconnect attempt by pjsip will be triggered as soon something needs to
+  send a packet using that transport. This can happen directly after a
+  disconnect since ca
+
+  Subsequent events can arrive later like PJSIP_TP_STATE_DESTROY and will
+  also try to trigger the destruction of the transport monitor if not
+  already done. Since the lookup for the transport monitor to destroy is
+  done using the transport key, it can match newly created transports
+  towards the same destination and destroy their monitor object.
+
+  Because of this, it was sometimes not possible to monitor a transport
+  after one or more disconnections.
+
+  This fix adds an additional check on the transport pointer to ensure
+  only a monitor for that specific transport is removed.
+
+  Fixes: #923
+
+#### app_dial: Fix progress timeout calculation with no answer timeout.
+  Author: Naveen Albert
+  Date:   2024-10-16
+
+  If to_answer is -1, simply comparing to see if the progress timeout
+  is smaller than the answer timeout to prefer it will fail. Add
+  an additional check that chooses the progress timeout if there is
+  no answer timeout (or as before, if the progress timeout is smaller).
+
+  Resolves: #821
+
+#### pjproject_bundled:  Tweaks to support out-of-tree development
+  Author: George Joseph
+  Date:   2024-10-17
+
+  * pjproject is now configured with --disable-libsrtp so it will
+    build correctly when doing "out-of-tree" development.  Asterisk
+    doesn't use pjproject for handling media so pjproject doesn't
+    need libsrtp itself.
+
+  * The pjsua app (which we used to use for the testsuite) no longer
+    builds in pjproject's master branch so we just skip it.  The
+    testsuite no longer needs it anyway.
+
+  See third-party/pjproject/README-hacking.md for more info on building
+  pjproject "out-of-tree".
+
+
+#### Revert "res_rtp_asterisk: Count a roll-over of the sequence number even on los..
+  Author: Sean Bright
+  Date:   2024-10-07
+
+  This reverts commit cb5e3445be6c55517c8d05aca601b648341f8ae9.
+
+  The original change from 16 to 15 bit sequence numbers was predicated
+  on the following from the now-defunct libSRTP FAQ on sourceforge.net:
+
+  > *Q6. The use of implicit synchronization via ROC seems
+  > dangerous. Can senders and receivers lose ROC synchronization?*
+  >
+  > **A.** It is possible to lose ROC synchronization between sender and
+  > receiver(s), though it is not likely in practice, and practical
+  > steps can be taken to avoid it. A burst loss of 2^16 packets or more
+  > will always break synchronization. For example, a conversational
+  > voice codec that sends 50 packets per second will have its ROC
+  > increment about every 22 minutes. A network with a burst of packet
+  > loss that long has problems other than ROC synchronization.
+  >
+  > There is a higher sensitivity to loss at the very outset of an SRTP
+  > stream. If the sender's initial sequence number is close to the
+  > maximum value of 2^16-1, and all packets are lost from the initial
+  > packet until the sequence number cycles back to zero, the sender
+  > will increment its ROC, but the receiver will not. The receiver
+  > cannot determine that the initial packets were lost and that
+  > sequence-number rollover has occurred. In this case, the receiver's
+  > ROC would be zero whereas the sender's ROC would be one, while their
+  > sequence numbers would be so close that the ROC-guessing algorithm
+  > could not detect this fact.
+  >
+  > There is a simple solution to this problem: the SRTP sender should
+  > randomly select an initial sequence number that is always less than
+  > 2^15. This ensures correct SRTP operation so long as fewer than 2^15
+  > initial packets are lost in succession, which is within the maximum
+  > tolerance of SRTP packet-index determination (see Appendix A and
+  > page 14, first paragraph of RFC 3711). An SRTP receiver should
+  > carefully implement the index-guessing algorithm. A naive
+  > implementation can unintentionally guess the value of
+  > 0xffffffffffffLL whenever the SEQ in the packet is greater than 2^15
+  > and the locally stored SEQ and ROC are zero. (This can happen when
+  > the implementation fails to treat those zero values as a special
+  > case.)
+  >
+  > When ROC synchronization is lost, the receiver will not be able to
+  > properly process the packets. If anti-replay protection is turned
+  > on, then the desynchronization will appear as a burst of replay
+  > check failures. Otherwise, if authentication is being checked, then
+  > it will appear as a burst of authentication failures. Otherwise, if
+  > encryption is being used, the desynchronization may not be detected
+  > by the SRTP layer, and the packets may be improperly decrypted.
+
+  However, modern libSRTP (as of 1.0.1[1]) now mentions the following in
+  their README.md[2]:
+
+  > The sequence number in the rtp packet is used as the low 16 bits of
+  > the sender's local packet index. Note that RTP will start its
+  > sequence number in a random place, and the SRTP layer just jumps
+  > forward to that number at its first invocation. An earlier version
+  > of this library used initial sequence numbers that are less than
+  > 32,768; this trick is no longer required as the
+  > rdbx_estimate_index(...) function has been made smarter.
+
+  So truncating our initial sequence number to 15 bit is no longer
+  necessary.
+
+  1. https://github.com/cisco/libsrtp/blob/0eb007f0dc611f27cbfe0bf9855ed85182496cec/CHANGES#L271-L289
+  2. https://github.com/cisco/libsrtp/blob/2de20dd9e9c8afbaf02fcf5d4048ce1ec9ddc0ae/README.md#implementation-notes
+
+
+#### 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
+
+#### dnsmgr.c: dnsmgr_refresh() incorrectly flags change with DNS round-robin
+  Author: Allan Nathanson
+  Date:   2024-09-29
+
+  The dnsmgr_refresh() function checks to see if the IP address associated
+  with a name/service has changed. The gotcha is that the ast_get_ip_or_srv()
+  function only returns the first IP address returned by the DNS query. If
+  there are multiple IPs associated with the name and the returned order is
+  not consistent (e.g. with DNS round-robin) then the other IP addresses are
+  not included in the comparison and the entry is flagged as changed even
+  though the IP is still valid.
+
+  Updated the code to check all IP addresses and flag a change only if the
+  original IP is no longer valid.
+
+  Resolves: #924
+
+#### geolocation.sample.conf: Fix comment marker at end of file
+  Author: George Joseph
+  Date:   2024-10-08
+
+  Resolves: #937
+
+#### func_base64.c: Ensure we set aside enough room for base64 encoded data.
+  Author: Sean Bright
+  Date:   2024-10-08
+
+  Reported by SingularTricycle on IRC.
+
+  Fixes #940
+
+
+#### app_dial: Fix progress timeout.
+  Author: Naveen Albert
+  Date:   2024-10-03
+
+  Under some circumstances, the progress timeout feature added in commit
+  320c98eec87c473bfa814f76188a37603ea65ddd does not work as expected,
+  such as if there is no media flowing. Adjust the waitfor call to
+  explicitly use the progress timeout if it would be reached sooner than
+  the answer timeout to ensure we handle the timers properly.
+
+  Resolves: #821
+
+#### chan_dahdi: Never send MWI while off-hook.
+  Author: Naveen Albert
+  Date:   2024-10-01
+
+  In some circumstances, it is possible for the do_monitor thread to
+  erroneously think that a line is on-hook and send an MWI FSK spill
+  to it when the line is really off-hook and no MWI should be sent.
+  Commit 0a8b3d34673277b70be6b0e8ac50191b1f3c72c6 previously fixed this
+  issue in a more readily encountered scenario, but it has still been
+  possible for MWI to be sent when it shouldn't be. To robustly fix
+  this issue, query DAHDI for the hook status to ensure we don't send
+  MWI on a line that is actually still off hook.
+
+  Resolves: #928
+
+#### 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.
+
+
+#### res_agi.c: Ensure SIGCHLD handler functions are properly balanced.
+  Author: Sean Bright
+  Date:   2024-09-30
+
+  Calls to `ast_replace_sigchld()` and `ast_unreplace_sigchld()` must be
+  balanced to ensure that we can capture the exit status of child
+  processes when we need to. This extends to functions that call
+  `ast_replace_sigchld()` and `ast_unreplace_sigchld()` such as
+  `ast_safe_fork()` and `ast_safe_fork_cleanup()`.
+
+  The primary change here is ensuring that we do not call
+  `ast_safe_fork_cleanup()` in `res_agi.c` if we have not previously
+  called `ast_safe_fork()`.
+
+  Additionally we reinforce some of the documentation and add an
+  assertion to, ideally, catch this sooner were this to happen again.
+
+  Fixes #922
+
+
+#### main, res, tests: Fix compilation errors on FreeBSD.
+  Author: Naveen Albert
+  Date:   2024-09-29
+
+  asterisk.c, manager.c: Increase buffer sizes to avoid truncation warnings.
+  config.c: Include header file for WIFEXITED/WEXITSTATUS macros.
+  res_timing_kqueue: Use more portable format specifier.
+  test_crypto: Use non-linux limits.h header file.
+
+  Resolves: #916
+
+#### res_rtp_asterisk: Fix dtls timer issues causing FRACKs and SEGVs
+  Author: George Joseph
+  Date:   2024-09-16
+
+  In dtls_srtp_handle_timeout(), when DTLSv1_get_timeout() returned
+  success but with a timeout of 0, we were stopping the timer and
+  decrementing the refcount on instance but not resetting the
+  timeout_timer to -1.  When dtls_srtp_stop_timeout_timer()
+  was later called, it was atempting to stop a stale timer and could
+  decrement the refcount on instance again which would then cause
+  the instance destructor to run early.  This would result in either
+  a FRACK or a SEGV when ast_rtp_stop(0 was called.
+
+  According to the OpenSSL docs, we shouldn't have been stopping the
+  timer when DTLSv1_get_timeout() returned success and the new timeout
+  was 0 anyway.  We should have been calling DTLSv1_handle_timeout()
+  again immediately so we now reschedule the timer callback for
+  1ms (almost immediately).
+
+  Additionally, instead of scheduling the timer callback at a fixed
+  interval returned by the initial call to DTLSv1_get_timeout()
+  (usually 999 ms), we now reschedule the next callback based on
+  the last call to DTLSv1_get_timeout().
+
+  Resolves: #487
+
+#### manager.c: Restrict ModuleLoad to the configured modules directory.
+  Author: Ben Ford
+  Date:   2024-09-25
+
+  When using the ModuleLoad AMI action, it was possible to traverse
+  upwards through the directories to files outside of the configured
+  modules directory. We decided it would be best to restrict access to
+  modules exclusively in the configured directory. You will now get an
+  error when the specified module is outside of this limitation.
+
+  Fixes: #897
+
+  UserNote: The ModuleLoad AMI action now restricts modules to the
+  configured modules directory.
+
+
+#### res_agi.c: Prevent possible double free during `SPEECH RECOGNIZE`
+  Author: jiangxc
+  Date:   2024-07-17
+
+  When using the speech recognition module, crashes can occur
+  sporadically due to a "double free or corruption (out)" error. Now, in
+  the section where the audio stream is being captured in a loop, each
+  time after releasing fr, it is set to NULL to prevent repeated
+  deallocation.
+
+  Fixes #772
+
+
+#### cdr_custom: Allow absolute filenames.
+  Author: Sean Bright
+  Date:   2024-09-26
+
+  A follow up to #893 that brings the same functionality to
+  cdr_custom. Also update the sample configuration files to note support
+  for absolute paths.
+
+
+#### astfd.c: Avoid calling fclose with NULL argument.
+  Author: Naveen Albert
+  Date:   2024-09-24
+
+  Don't pass through a NULL argument to fclose, which is undefined
+  behavior, and instead return -1 and set errno appropriately. This
+  also avoids a compiler warning with glibc 2.38 and newer, as glibc
+  commit 71d9e0fe766a3c22a730995b9d024960970670af
+  added the nonnull attribute to this argument.
+
+  Resolves: #900
+
+#### channel: Preserve CHANNEL(userfield) on masquerade.
+  Author: Peter Jannesen
+  Date:   2024-09-20
+
+  In certain circumstances a channel may undergo an operation
+  referred to as a masquerade. If this occurs the CHANNEL(userfield)
+  value was not preserved causing it to get lost. This change makes
+  it so that this field is now preserved.
+
+  Fixes: #882
+
+#### cel_custom: Allow absolute filenames.
+  Author: Peter Jannesen
+  Date:   2024-09-20
+
+  If a filename starts with a '/' in cel_custom [mappings] assume it is
+  a absolute file path and not relative filename/path to
+  AST_LOG_DIR/cel_custom/
+
+
+#### app_voicemail: Fix ill-formatted pager emails with custom subject.
+  Author: Naveen Albert
+  Date:   2024-09-24
+
+  Add missing end-of-headers newline to pager emails with custom
+  subjects, since this was missing from this code path.
+
+  Resolves: #902
+
+#### 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.
+
+
+#### manager.conf.sample: Fix mathcing typo
+  Author: George Joseph
+  Date:   2024-09-24
+
+
+#### manager: Enhance event filtering for performance
+  Author: George Joseph
+  Date:   2024-07-31
+
+  UserNote: You can now perform more granular filtering on events
+  in manager.conf using expressions like
+  `eventfilter(name(Newchannel),header(Channel),method(starts_with)) = PJSIP/`
+  This is much more efficient than
+  `eventfilter = Event: Newchannel.*Channel: PJSIP/`
+  Full syntax guide is in configs/samples/manager.conf.sample.
+
+
+#### manager.c: Split XML documentation to manager_doc.xml
+  Author: George Joseph
+  Date:   2024-08-01
+
+
+#### db.c: Remove limit on family/key length
+  Author: George Joseph
+  Date:   2024-09-11
+
+  Consumers like media_cache have been running into issues with
+  the previous astdb "/family/key" limit of 253 bytes when needing
+  to store things like long URIs.  An Amazon S3 URI is a good example
+  of this.  Now, instead of using a static 256 byte buffer for
+  "/family/key", we use ast_asprintf() to dynamically create it.
+
+  Both test_db.c and test_media_cache.c were also updated to use
+  keys/URIs over the old 253 character limit.
+
+  Resolves: #881
+
+  UserNote: The `ast_db_*()` APIs have had the 253 byte limit on
+  "/family/key" removed and will now accept families and keys with a
+  total length of up to SQLITE_MAX_LENGTH (currently 1e9!).  This
+  affects the `DB*` dialplan applications, dialplan functions,
+  manager actions and `databse` CLI commands.  Since the
+  media_cache also uses the `ast_db_*()` APIs, you can now store
+  resources with URIs longer than 253 bytes.
+
+
index 8072dfb4df041f9f7ecde70e1a158dfb48a451eb..2f75770deb4bbaa35d4ec73007fb7ab0b45f73f1 100644 (file)
@@ -1701,3 +1701,15 @@ ALTER TABLE ps_endpoints ADD COLUMN tenantid VARCHAR(80);
 
 UPDATE alembic_version SET version_num='655054a68ad5' WHERE alembic_version.version_num = '2b7c507d7d12';
 
+-- 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('yes','no');
+
+UPDATE alembic_version SET version_num='4f91fc18c979' WHERE alembic_version.version_num = '801b9fced8b7';
+
index 8827672fa436a07716ce0565b6c2473d5710cd6c..a75247944a8683580757d006d29fd1659364106e 100644 (file)
@@ -39,3 +39,9 @@ ALTER TABLE voicemail_messages DROP COLUMN macrocontext;
 
 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';
+
index 86773942770c807d1cd4cd4aea8eadc8b8d54282..ea01b5332e0ed132850efcafef78246ef7dd3961 100644 (file)
@@ -1825,5 +1825,17 @@ ALTER TABLE ps_endpoints ADD COLUMN tenantid VARCHAR(80);
 
 UPDATE alembic_version SET version_num='655054a68ad5' WHERE alembic_version.version_num = '2b7c507d7d12';
 
+-- 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 yesno_values;
+
+UPDATE alembic_version SET version_num='4f91fc18c979' WHERE alembic_version.version_num = '801b9fced8b7';
+
 COMMIT;
 
index 79f2978613c5f967113a5529add1b2ab8af45db8..67d0287c6d3ca52970fc669f361d1723b0496cf1 100644 (file)
@@ -41,5 +41,11 @@ ALTER TABLE voicemail_messages DROP COLUMN macrocontext;
 
 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;