From c6e587c8a91456f3cfb4baeafc1f182cd7e0ae79 Mon Sep 17 00:00:00 2001 From: Asterisk Development Team Date: Thu, 18 Jul 2024 14:04:45 +0000 Subject: [PATCH] Update for certified-18.9-cert10 --- .version | 2 +- CHANGES.md | 2 +- ChangeLogs/ChangeLog-certified-18.9-cert10.md | 166 ++++++++++++++++++ contrib/realtime/mysql/mysql_config.sql | 4 +- contrib/realtime/mysql/mysql_queue_log.sql | 2 +- .../realtime/postgresql/postgresql_cdr.sql | 2 +- .../realtime/postgresql/postgresql_config.sql | 2 +- .../postgresql/postgresql_queue_log.sql | 2 +- .../postgresql/postgresql_voicemail.sql | 2 +- 9 files changed, 175 insertions(+), 9 deletions(-) create mode 100644 ChangeLogs/ChangeLog-certified-18.9-cert10.md diff --git a/.version b/.version index aebf11cff7..6f9bb9645d 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -certified-18.9-cert9 +certified-18.9-cert10 diff --git a/CHANGES.md b/CHANGES.md index 6fb9820db9..4fcec8cf27 120000 --- a/CHANGES.md +++ b/CHANGES.md @@ -1 +1 @@ -ChangeLogs/ChangeLog-certified-18.9-cert9.md \ No newline at end of file +ChangeLogs/ChangeLog-certified-18.9-cert10.md \ No newline at end of file diff --git a/ChangeLogs/ChangeLog-certified-18.9-cert10.md b/ChangeLogs/ChangeLog-certified-18.9-cert10.md new file mode 100644 index 0000000000..277d097981 --- /dev/null +++ b/ChangeLogs/ChangeLog-certified-18.9-cert10.md @@ -0,0 +1,166 @@ + +## Change Log for Release asterisk-certified-18.9-cert10 + +### Links: + + - [Full ChangeLog](https://downloads.asterisk.org/pub/telephony/certified-asterisk/releases/ChangeLog-certified-18.9-cert10.md) + - [GitHub Diff](https://github.com/asterisk/asterisk/compare/certified-18.9-cert9...certified-18.9-cert10) + - [Tarball](https://downloads.asterisk.org/pub/telephony/certified-asterisk/asterisk-certified-18.9-cert10.tar.gz) + - [Downloads](https://downloads.asterisk.org/pub/telephony/certified-asterisk) + +### Summary: + +- Commits: 4 +- Commit Authors: 2 +- Issues Resolved: 0 +- 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. + + +### Upgrade Notes: + + +### Commit Authors: + +- George Joseph: (2) +- Sean Bright: (2) + +## Issue and Commit Detail: + +### Closed Issues: + +None + +### Commits By Author: + +- ### George Joseph (2): + - logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT + - app_voicemail_odbc: Allow audio to be kept on disk + +- ### Sean Bright (2): + - app_voicemail.c: Completely resequence mailbox folders. + - logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds. + + +### Commit List: + +- logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds. +- app_voicemail_odbc: Allow audio to be kept on disk +- logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT +- app_voicemail.c: Completely resequence mailbox folders. + +### Commit Details: + +#### logger.h: Include SCOPE_CALL_WITH_INT_RESULT() in non-dev-mode builds. + Author: Sean Bright + Date: 2024-06-29 + + Fixes #785 + + +#### 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. + + +#### logger.h: Add SCOPE_CALL and SCOPE_CALL_WITH_RESULT + Author: George Joseph + Date: 2024-04-09 + + If you're tracing a large function that may call another function + multiple times in different circumstances, it can be difficult to + see from the trace output exactly which location that function + was called from. There's no good way to automatically determine + the calling location. SCOPE_CALL and SCOPE_CALL_WITH_RESULT + simply print out a trace line before and after the call. + + The difference between SCOPE_CALL and SCOPE_CALL_WITH_RESULT is + that SCOPE_CALL ignores the function's return value (if any) where + SCOPE_CALL_WITH_RESULT allows you to specify the type of the + function's return value so it can be assigned to a variable. + SCOPE_CALL_WITH_INT_RESULT is just a wrapper for SCOPE_CALL_WITH_RESULT + and the "int" return type. + + +#### app_voicemail.c: Completely resequence mailbox folders. + Author: Sean Bright + Date: 2023-11-27 + + Resequencing is a process that occurs when we open a voicemail folder + and discover that there are gaps between messages (e.g. `msg0000.txt` + is missing but `msg0001.txt` exists). Resequencing involves shifting + the existing messages down so we end up with a sequential list of + messages. + + Currently, this process stops after reaching a threshold based on the + message limit (`maxmsg`) configured on the current folder. However, if + `maxmsg` is lowered when a voicemail folder contains more than + `maxmsg + 10` messages, resequencing will not run completely leaving + the mailbox in an inconsistent state. + + We now resequence up to the maximum number of messages permitted by + `app_voicemail` (currently hard-coded at 9999 messages). + + Fixes #86 + + diff --git a/contrib/realtime/mysql/mysql_config.sql b/contrib/realtime/mysql/mysql_config.sql index 1c51629a6c..e92825c0cb 100644 --- a/contrib/realtime/mysql/mysql_config.sql +++ b/contrib/realtime/mysql/mysql_config.sql @@ -58,7 +58,7 @@ CREATE TABLE sippeers ( regexten VARCHAR(40), fromdomain VARCHAR(40), fromuser VARCHAR(40), - qualify VARCHAR(40), + `qualify` VARCHAR(40), defaultip VARCHAR(45), rtptimeout INTEGER, rtpholdtimeout INTEGER, @@ -146,7 +146,7 @@ CREATE TABLE iaxfriends ( disallow VARCHAR(200), allow VARCHAR(200), codecpriority VARCHAR(40), - qualify VARCHAR(10), + `qualify` VARCHAR(10), qualifysmoothing ENUM('yes','no'), qualifyfreqok VARCHAR(10), qualifyfreqnotok VARCHAR(10), diff --git a/contrib/realtime/mysql/mysql_queue_log.sql b/contrib/realtime/mysql/mysql_queue_log.sql index 13dde964c2..924f8406fe 100644 --- a/contrib/realtime/mysql/mysql_queue_log.sql +++ b/contrib/realtime/mysql/mysql_queue_log.sql @@ -23,7 +23,7 @@ CREATE TABLE queue_log ( UNIQUE (id) ); -INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58'); +INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58') RETURNING alembic_version.version_num; COMMIT; diff --git a/contrib/realtime/postgresql/postgresql_cdr.sql b/contrib/realtime/postgresql/postgresql_cdr.sql index 79380171a8..409b90ef73 100644 --- a/contrib/realtime/postgresql/postgresql_cdr.sql +++ b/contrib/realtime/postgresql/postgresql_cdr.sql @@ -31,7 +31,7 @@ CREATE TABLE cdr ( sequence INTEGER ); -INSERT INTO alembic_version (version_num) VALUES ('210693f3123d'); +INSERT INTO alembic_version (version_num) VALUES ('210693f3123d') RETURNING alembic_version.version_num; -- Running upgrade 210693f3123d -> 54cde9847798 diff --git a/contrib/realtime/postgresql/postgresql_config.sql b/contrib/realtime/postgresql/postgresql_config.sql index 4e499ae800..bce7ca39c9 100644 --- a/contrib/realtime/postgresql/postgresql_config.sql +++ b/contrib/realtime/postgresql/postgresql_config.sql @@ -272,7 +272,7 @@ CREATE TABLE musiconhold ( PRIMARY KEY (name) ); -INSERT INTO alembic_version (version_num) VALUES ('4da0c5f79a9c'); +INSERT INTO alembic_version (version_num) VALUES ('4da0c5f79a9c') RETURNING alembic_version.version_num; -- Running upgrade 4da0c5f79a9c -> 43956d550a44 diff --git a/contrib/realtime/postgresql/postgresql_queue_log.sql b/contrib/realtime/postgresql/postgresql_queue_log.sql index 13dde964c2..924f8406fe 100644 --- a/contrib/realtime/postgresql/postgresql_queue_log.sql +++ b/contrib/realtime/postgresql/postgresql_queue_log.sql @@ -23,7 +23,7 @@ CREATE TABLE queue_log ( UNIQUE (id) ); -INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58'); +INSERT INTO alembic_version (version_num) VALUES ('4105ee839f58') RETURNING alembic_version.version_num; COMMIT; diff --git a/contrib/realtime/postgresql/postgresql_voicemail.sql b/contrib/realtime/postgresql/postgresql_voicemail.sql index db7d09a930..75caef9ec1 100644 --- a/contrib/realtime/postgresql/postgresql_voicemail.sql +++ b/contrib/realtime/postgresql/postgresql_voicemail.sql @@ -27,7 +27,7 @@ ALTER TABLE voicemail_messages ADD CONSTRAINT voicemail_messages_dir_msgnum PRIM CREATE INDEX voicemail_messages_dir ON voicemail_messages (dir); -INSERT INTO alembic_version (version_num) VALUES ('a2e9769475e'); +INSERT INTO alembic_version (version_num) VALUES ('a2e9769475e') RETURNING alembic_version.version_num; -- Running upgrade a2e9769475e -> 39428242f7f5