From: Asterisk Development Team Date: Thu, 14 Nov 2024 20:01:04 +0000 (+0000) Subject: Update for 20.11.0-rc1 X-Git-Tag: 20.11.0-rc1^0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e688b81580d39fec56666056f8d6df85c22f58a2;p=thirdparty%2Fasterisk.git Update for 20.11.0-rc1 --- diff --git a/.version b/.version index d5a159609d..25149b2362 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -20.10.0 +20.11.0-rc1 diff --git a/CHANGES.md b/CHANGES.md index 3a00bf0218..0bae68b385 120000 --- a/CHANGES.md +++ b/CHANGES.md @@ -1 +1 @@ -ChangeLogs/ChangeLog-20.10.0.md \ No newline at end of file +ChangeLogs/ChangeLog-20.11.0-rc1.md \ No newline at end of file diff --git a/ChangeLogs/ChangeLog-20.11.0-rc1.md b/ChangeLogs/ChangeLog-20.11.0-rc1.md new file mode 100644 index 0000000000..dc61d83bef --- /dev/null +++ b/ChangeLogs/ChangeLog-20.11.0-rc1.md @@ -0,0 +1,750 @@ + +## Change Log for Release asterisk-20.11.0-rc1 + +### Links: + + - [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/asterisk/releases/ChangeLog-20.11.0-rc1.md) + - [GitHub Diff](https://github.com/asterisk/asterisk/compare/20.10.0...20.11.0-rc1) + - [Tarball](https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-20.11.0-rc1.tar.gz) + - [Downloads](https://downloads.asterisk.org/pub/telephony/asterisk) + +### Summary: + +- Commits: 39 +- 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: (8) +- 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 (8): + - 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.. + - chan_sip.c: Fix __sip_reliable_xmit build error + - 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 +- chan_sip.c: Fix __sip_reliable_xmit build error +- 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". + + +#### chan_sip.c: Fix __sip_reliable_xmit build error + Author: Sean Bright + Date: 2024-10-17 + + Fixes #954 + + +#### 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. + + diff --git a/contrib/realtime/mysql/mysql_config.sql b/contrib/realtime/mysql/mysql_config.sql index 32ec1580cf..01ffdffd4b 100644 --- a/contrib/realtime/mysql/mysql_config.sql +++ b/contrib/realtime/mysql/mysql_config.sql @@ -1699,3 +1699,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'; + diff --git a/contrib/realtime/mysql/mysql_voicemail.sql b/contrib/realtime/mysql/mysql_voicemail.sql index 8c9d9617c4..88233f9fa9 100644 --- a/contrib/realtime/mysql/mysql_voicemail.sql +++ b/contrib/realtime/mysql/mysql_voicemail.sql @@ -37,3 +37,9 @@ UPDATE alembic_version SET version_num='39428242f7f5' WHERE alembic_version.vers 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'; + diff --git a/contrib/realtime/postgresql/postgresql_config.sql b/contrib/realtime/postgresql/postgresql_config.sql index 84703ab77a..01164749c4 100644 --- a/contrib/realtime/postgresql/postgresql_config.sql +++ b/contrib/realtime/postgresql/postgresql_config.sql @@ -1823,5 +1823,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; diff --git a/contrib/realtime/postgresql/postgresql_voicemail.sql b/contrib/realtime/postgresql/postgresql_voicemail.sql index 13fa072125..ada42ee881 100644 --- a/contrib/realtime/postgresql/postgresql_voicemail.sql +++ b/contrib/realtime/postgresql/postgresql_voicemail.sql @@ -39,5 +39,11 @@ UPDATE alembic_version SET version_num='39428242f7f5' WHERE alembic_version.vers 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;