Alexander Traud [Fri, 9 Mar 2018 12:26:40 +0000 (13:26 +0100)]
BuildSystem: When no download utility is available, display the explanation.
./configure --with-pjproject-bundled
did not display an explanation, when no download utility like wget, curl, or
fetch was installed beforehand, although an explanation existed in code. This
happened because the code expected the variable DOWNLOAD_TO_STDOUT to be empty.
However, the script ./configure set that variable always.
Alexander Traud [Fri, 16 Mar 2018 14:53:22 +0000 (15:53 +0100)]
BuildSystem: Avoid an extra case for OpenBSD.
Nine years ago with Mantis 13639 (now ASTERISK-12841) an extra case for OpenBSD
was introduced: Vorbis required Ogg to be specified manually, because the shared
library libvorbis.so did not specify its required dependency on -logg itself.
Today with OpenBSD 6.2, all libvorbis*.so declare their dependencies correctly.
Therefore, an extra case is not required anymore.
George Joseph [Fri, 16 Mar 2018 14:02:20 +0000 (08:02 -0600)]
app_voicemail: Fix json blob errors
When app_voicemail calls ast_test_suite_notify with the results of
a user keypress, it formats the keypress as '%c'. If the user hung up
or some other error occurrs, the result of the keypress is a non
printable character. This ultimately causes json_vpack_ex to think
it's being passed a non utf-8 string and return an error.
* Keypress results passed to ast_test_suite_notify are now checked with
isprint() and a '?' is substituted if the check fails.
Corey Farrell [Thu, 15 Mar 2018 09:49:49 +0000 (05:49 -0400)]
core: Backport compatible MALLOC_DEBUG changes.
* Add support for MALLOC_DEBUG and DEBUG_CHAOS to be used together.
* Add utils/astmm.c to .gitignore.
* Fix MALLOC_DEBUG variant of __ast_vasprintf. This function called
va_end(ap) upon allocation failure. This is incorrect since ap is
passed as an argument.
Corey Farrell [Tue, 13 Mar 2018 20:53:24 +0000 (16:53 -0400)]
core: Remove incorrect usage of attribute_malloc.
GCC documentation states that when __attribute__((malloc)) is used it
should not return storage which contains any valid pointers. It
specifically mentions that realloc functions should not have the malloc
attribute, but this also means that complex initializers which could
contain initialized pointers should not use this attribute.
Corey Farrell [Sat, 10 Mar 2018 09:33:33 +0000 (04:33 -0500)]
core: Remove non-critical cleanup from startup aborts.
When built-in components of Asterisk fail to start they cause the
Asterisk startup to abort. In these cases only the most critical
cleanup should be performed - closing databases and terminating
proceses. These cleanups are registered using ast_register_atexit, all
other cleanups should not be run during startup abort.
The main reason for this change is that these cleanup procedures are
untestable from the partially initialized states, if they fail it could
prevent us from ever running the critical cleanup with ast_run_atexits.
Create separate initialization for dns_core.c to be run unconditionally
during startup instead of being initialized by the first dns resolver to
be registered. This ensures that 'sched' is initialized before it can be
potentially used.
Replace ast_register_atexit with ast_register_cleanup in media_cache.c.
There is no reason for this cleanup to happen unconditionally.
Alexander Traud [Mon, 12 Mar 2018 11:40:11 +0000 (12:40 +0100)]
install_prereq: Update FreeBSD libraries.
Because the code review system Gerrit creates merge conflicts even when one line
apart another change happened, the previous update to the FreeBSD libraries had
to be rebased via Git. Because of a break for training of the original
contributor, this rebase was done by another contributor and the variant for
Asterisk 13 was cherry-picked to all branches. By this, dependencies for new
features added in newer Asterisk version got lost. This can be seen, when not
the original path set but a previous patch set is compared.
This change here fixes this by adding those (optional) dependencies for
Asterisk 15 and newer (again).
Alexander Traud [Mon, 12 Mar 2018 09:11:15 +0000 (10:11 +0100)]
res_srtp: Add support for libsrtp2.x on openSUSE.
Since ASTERISK-27253, no symbols from the header srtp2/crypto_types.h are used
anymore. Therefore, its include statement can be removed. This allows to compile
Asterisk on platforms which do not offer this private header, like openSUSE.
Alexander Traud [Fri, 9 Mar 2018 09:23:53 +0000 (10:23 +0100)]
BuildSystem: For consistency, avoid double-checking via if clauses.
In the script ./configure, AST_EXT_LIB_CHECK and AST_PKG_CONFIG_CHECK first test
whether parameter 1 was already found. Consequently, an if-test on PBX_ just a
line below is redundant, if exactly the same parameter 1 is used again.
No performance gain is expected by this change. However, because this strategy
is used all over in ./configure except for two places, this change aims to
create more consistency: Only do something different if there is a reason to do
so.
Alexander Traud [Tue, 6 Mar 2018 12:28:15 +0000 (13:28 +0100)]
BuildSystem: Enable PortAudio in NetBSD.
In NetBSD, PortAudio 1 is still the default version. PortAudio 2 can be
installed side by side but gets placed in a 'portaudio2' subdirectory. To
find PortAudio 2 even in a subdirectory, the tool pkg-config is queried via
AST_PKG_CONFIG_CHECK. For those platforms, which do not list PowerAudio 2
via pkg-config, the previous check remains and is executed thereafter.
Corey Farrell [Wed, 7 Mar 2018 20:36:17 +0000 (15:36 -0500)]
Replace direct checks of option_debug with DEBUG_ATLEAST macro.
Checking option_debug directly is incorrect as it ignores file/module
specific debug settings. This system-wide change replaces nearly all
direct checks for option_debug with the DEBUG_ATLEAST macro.
Richard Mudgett [Wed, 7 Mar 2018 19:13:42 +0000 (13:13 -0600)]
BuildSystem regression: Fix errors reported by clean targets.
Doing a 'make clean', 'make distclean', or 'make dist-clean' gets errors
about an invalid shell option: "/bin/sh: 0: Illegal option -".
The clean targets do not include the makeopts file which defines GREP and
LDCONFIG because the file may not exist and the distclean/dist-clean
targets will delete it anyway.
Alexander Traud [Wed, 7 Mar 2018 15:32:05 +0000 (16:32 +0100)]
utils: In Solaris, avoid a warning about an unused variable.
When HAVE_GETHOSTBYNAME_R_5 was set by the script ./configure, GCC 7.3.0 found
an unused variable. Actually, the variable was used (set to a dummy value) but
the compiler optimization might have removed that. Instead, this change ensures
that the variable 'res' is only used when it is really required.
lvl [Tue, 20 Feb 2018 17:48:50 +0000 (18:48 +0100)]
res_pjsip_session: properly handle SDP from a forked call with early media
In handle_negotiated_sdp(), use session->active_media_state when
session->pending_media_state is empty. The 200's SDP should be fed into
handle_negotiated_sdp_session_media() together with the already negotiated
state, which is now in session->active_media_state instead. Only if both
the session's pending and active media are empty should
handle_negotiated_sdp() abort.
Richard Mudgett [Tue, 27 Feb 2018 21:40:18 +0000 (15:40 -0600)]
pjproject: Add cache_pools debugging option.
The pool cache gets in the way of finding use after free errors of memory
pool contents. Tools like valgrind and MALLOC_DEBUG don't know when a
pool is released because it gets put into the cache instead of being
freed.
* Added the "cache_pools" option to pjproject.conf. Disabling the option
helps track down pool content mismanagement when using valgrind or
MALLOC_DEBUG. The cache gets in the way of determining if the pool
contents are used after free and who freed it.
To disable the pool caching simply disable the cache_pools option in
pjproject.conf and restart Asterisk.
Michael Cargile [Sat, 24 Feb 2018 03:24:10 +0000 (22:24 -0500)]
apps/app_amd.c: Fixed total time and silence calculations
Between Asterisk 11 and Asterisk 13 there was a significant increase
in the number of AST_FRAME_NULL frames being processed by app_amd.c's
main loop. Each AST_FRAME_NULL frame was being counted as 100ms
towards the total time and silence. This may have been accurate
when app_amd.c was orginally added, but it is not in Asterisk 13.
As such the total analysis time and silence calculations were way
off effectively breaking app_amd.c
* Additional debug messages were added
* AST_FRAME_NULL are now ignored
Ben Ford [Thu, 22 Feb 2018 20:27:26 +0000 (14:27 -0600)]
Add extended properties to rtp_engine for RTP retransmission support.
A couple of additional properties are needed in rtp_engine to enable
support for packet retransmission: AST_RTP_PROPERTY_RETRANS_RECV and
AST_RTP_PROPERTY_RETRANS_SEND. These will both be enabled automatically
if an endpoint has the webrtc option enabled. While this adds no
functionality currently, it will serve as a building block for future
changes for RTP retransmission support.
For more information, refer to the wiki page:
https://wiki.asterisk.org/wiki/display/AST/WebRTC+User+Experience+Improvements
Corey Farrell [Fri, 23 Feb 2018 16:09:46 +0000 (11:09 -0500)]
core: Fix handling of maximum length lines in config files.
When a line is the maximum length "\n" is found at sizeof(buf) - 2 since
the last character is actually the null terminator. In addition if a
line was exactly 8190 plus a multiple of 8192 characters long the config
parser would skip the following line.
Additionally fix comment in voicemail.conf sample config. It previously
stated that emailbody can only contain up to 512 characters which is
always wrong. The buffer is normally 8192 characters unless LOW_MEMORY
is enabled then it is 512 characters. The updated comment states that
the line can be up to 8190 or 510 characters since the line feed and
NULL terminator each use a character.