|
|
|
@@ -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
|
|
|
|
|
|
|
|
|
|
|