asterisk/asterisk.git
21 months agoloader: Fix comments in struct ast_module.
Corey Farrell [Mon, 20 Nov 2017 03:23:44 +0000 (22:23 -0500)]
loader: Fix comments in struct ast_module.

Make the comments follow doxygen format, move comments to the line
before each field they describe.

Change-Id: Ic445468398b5e88f13910f7c2f70bd15aad33a27

21 months agoMerge "res_pjsip: Use sorcery prefix operation for contact lookup"
Joshua Colp [Mon, 20 Nov 2017 22:48:23 +0000 (16:48 -0600)]
Merge "res_pjsip: Use sorcery prefix operation for contact lookup"

21 months agoMerge "acl: Fix allocation related issues."
Joshua Colp [Mon, 20 Nov 2017 22:47:56 +0000 (16:47 -0600)]
Merge "acl: Fix allocation related issues."

21 months agoMerge "bridge_basic: Ignore answer from transfer target when they've timed out."
Joshua Colp [Mon, 20 Nov 2017 20:54:48 +0000 (14:54 -0600)]
Merge "bridge_basic: Ignore answer from transfer target when they've timed out."

21 months agocli: Remove silly usage of RAII_VAR.
Corey Farrell [Thu, 16 Nov 2017 23:25:04 +0000 (18:25 -0500)]
cli: Remove silly usage of RAII_VAR.

Change-Id: I81aacfee7cd26e4fc5eef07bca582700c2975bd7

21 months agoMerge "doxygen: Remove obsolete contents."
Joshua Colp [Mon, 20 Nov 2017 20:29:40 +0000 (14:29 -0600)]
Merge "doxygen: Remove obsolete contents."

21 months agoccss: Remove silly usage of RAII_VAR.
Corey Farrell [Thu, 16 Nov 2017 19:19:19 +0000 (14:19 -0500)]
ccss: Remove silly usage of RAII_VAR.

Change-Id: I5ce40035e0a940e4e56f6322c1dcd47fbd509b98

21 months agoapp: Remove silly usage of RAII_VAR.
Corey Farrell [Thu, 16 Nov 2017 18:51:37 +0000 (13:51 -0500)]
app: Remove silly usage of RAII_VAR.

Change-Id: Ideb594f7aae134974fb78d5477ba0853b97b8625

21 months agoaoc: Remove silly usage of RAII_VAR.
Corey Farrell [Thu, 16 Nov 2017 18:19:43 +0000 (13:19 -0500)]
aoc: Remove silly usage of RAII_VAR.

Change-Id: I07907f833b81aeb0128bc9442a2abb52679c7511

21 months agoabstract_jb: Remove silly usage of RAII_VAR.
Corey Farrell [Thu, 16 Nov 2017 18:55:14 +0000 (13:55 -0500)]
abstract_jb: Remove silly usage of RAII_VAR.

Change-Id: I9d56175369363d1dc735504cf78a3a5577069f49

21 months agoMerge "res_fax: Remove checks for unsigned values being >= 0."
Joshua Colp [Mon, 20 Nov 2017 19:33:35 +0000 (13:33 -0600)]
Merge "res_fax: Remove checks for unsigned values being >= 0."

21 months agores_mwi_external_ami: Remove incorrect load priority.
Corey Farrell [Mon, 20 Nov 2017 19:08:57 +0000 (14:08 -0500)]
res_mwi_external_ami: Remove incorrect load priority.

res_mwi_external_ami specified AST_MODFLAG_LOAD_ORDER but didn't set
load_pri, resulting in an actual load priority of 0.  This module only
provides AMI actions so it has no reason to load early.

Change-Id: I82987fcf10d3ea42716b2f9df915b16687fd5839

21 months agoLoader: Remove unneeded load_pri declarations.
Corey Farrell [Mon, 20 Nov 2017 18:54:38 +0000 (13:54 -0500)]
Loader: Remove unneeded load_pri declarations.

Instead of specifying AST_MODFLAG_LOAD_ORDER with load_pri
AST_MODPRI_DEFAULT just use AST_MODFLAG_DEFAULT.

Change-Id: I0123258eafce324249433a69df15a85cc16e509f

21 months agoMerge "res_snmp: Declare RONLY if net-snmp headers do not."
Joshua Colp [Mon, 20 Nov 2017 18:13:01 +0000 (12:13 -0600)]
Merge "res_snmp: Declare RONLY if net-snmp headers do not."

21 months agoMerge "iostream: Fix ast_iostream_printf declaration."
Joshua Colp [Mon, 20 Nov 2017 17:54:06 +0000 (11:54 -0600)]
Merge "iostream: Fix ast_iostream_printf declaration."

21 months agoMerge "tests: Fix warnings found on Mac."
Joshua Colp [Mon, 20 Nov 2017 17:32:51 +0000 (11:32 -0600)]
Merge "tests: Fix warnings found on Mac."

21 months agoMerge "app_minivm: Fix possible uninitialized return value."
Joshua Colp [Mon, 20 Nov 2017 16:39:16 +0000 (10:39 -0600)]
Merge "app_minivm: Fix possible uninitialized return value."

21 months agoBuildSystem: pjsip_evsub_set_uas_timeout was not used.
Alexander Traud [Mon, 20 Nov 2017 15:49:04 +0000 (16:49 +0100)]
BuildSystem: pjsip_evsub_set_uas_timeout was not used.

ASTERISK-27435

Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c

21 months agoMerge "res_pjsip: Fix warning by deferring implicit type cast."
Joshua Colp [Mon, 20 Nov 2017 15:44:12 +0000 (09:44 -0600)]
Merge "res_pjsip: Fix warning by deferring implicit type cast."

21 months agoBuild: Fix OSX build issues.
Corey Farrell [Sun, 19 Nov 2017 15:57:28 +0000 (10:57 -0500)]
Build: Fix OSX build issues.

OSX does not support 'readlink -f' or 'sed -r'.  Replace readlink with
the GNU make macro 'realpath'.  Replace sed with grep in one place, cut
in the other.

ASTERISK-27332

Change-Id: I5d34ecca905384decb22ead45c913ae5e8aff748

21 months agoBuild: Fix issues building without SSL.
Corey Farrell [Sun, 19 Nov 2017 19:52:59 +0000 (14:52 -0500)]
Build: Fix issues building without SSL.

* Fix conditional in libasteriskssl.
* Use variables produced by configure to link the SSL and uuid libraries
  into libasteriskpj.so instead of hard-coding them.

ASTERISK-27431

Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d

21 months agores_pjsip: Fix warning by deferring implicit type cast.
Corey Farrell [Sun, 19 Nov 2017 19:28:41 +0000 (14:28 -0500)]
res_pjsip: Fix warning by deferring implicit type cast.

Mac doesn't like the comparison of -1 to an enum, so store the result of
ast_sip_str_to_dtmf to an int so we can check for the negative return
value.  ast_sip_str_to_dtmf returns an int so this is only delaying the
implicit type cast.

Change-Id: I0c262c1719ee951aae1f437d733a301cf5f8ad29

21 months agotests: Fix warnings found on Mac.
Corey Farrell [Sun, 19 Nov 2017 03:13:32 +0000 (22:13 -0500)]
tests: Fix warnings found on Mac.

test_pbx used raise without explicitly including signal.h.  On Mac for
some reason nothing else includes it.

test_logger checked if an unsigned int was negative.  Switch the
variable to 'int' so that error check can be effective.

Change-Id: Ie1db5dd1818ac25cc2ae41b644f848b5865b1362

21 months agores_snmp: Declare RONLY if net-snmp headers do not.
Corey Farrell [Sun, 19 Nov 2017 02:25:50 +0000 (21:25 -0500)]
res_snmp: Declare RONLY if net-snmp headers do not.

Some net-snmp builds do not provide the RONLY declare, only
NETSNMP_OLDAPI_RONLY.  Map RONLY to NETSNMP_OLDAPI_RONLY to get around
this error.

Change-Id: Ida5c7ad9406515825485c4d3b4a34fd6ad0da577

21 months agores_fax: Remove checks for unsigned values being >= 0.
Corey Farrell [Sun, 19 Nov 2017 02:02:17 +0000 (21:02 -0500)]
res_fax: Remove checks for unsigned values being >= 0.

It's impossible for gwtimeout or fdtimeout to be less than 0 because
they are unsigned int's.  Remove checks and unreachable branches.

Change-Id: Ib2286960621e6ee245e40013c84986143302bc78

21 months agoiostream: Fix ast_iostream_printf declaration.
Corey Farrell [Sun, 19 Nov 2017 01:50:48 +0000 (20:50 -0500)]
iostream: Fix ast_iostream_printf declaration.

This adds the printf attribute and changes 'fmt' from 'const void *' to
'const char *'.  This resolves a warning from some compiler for
vsnprintf needing a literal string for format.

Change-Id: I71c33a8262590042ee451e1146760c10bb22fb78

21 months agoapp_minivm: Fix possible uninitialized return value.
Corey Farrell [Sun, 19 Nov 2017 01:29:16 +0000 (20:29 -0500)]
app_minivm: Fix possible uninitialized return value.

Declare 'res' initialized to -1 to deal with earlier error paths that
could cause 'res' to be returned uninitialized.

Change-Id: I8ac2a5755bf4174d89ef893e924c940f702b104e

21 months agores_rtp_asterisk.c: Fix rtp source address learning for broken clients
Pirmin Walthert [Thu, 16 Nov 2017 08:47:39 +0000 (09:47 +0100)]
res_rtp_asterisk.c: Fix rtp source address learning for broken clients

Some clients do not send rtp packets every ptime ms. This can lead to
situations in which the rtp source learning algorithm will never learn
the address of the client. This has been discovered on a Mac mini with
a pjsip based softphone after updating to Sierra: as soon as USB
headsets are involved, the softphone will send the second packet 30ms
after the first, the third 30ms after the second and the fourth 1ms
after the third. So in the old implmentation the rtp source learning
algorithm was repeatedly reset on the fourth packet.

The patch changes the algorithm in a way that doesn't take the arrival
time between two consecutive packets into account but the time between
the first and the last packet of a learning sequence.

The patch also fixes a second problem: when a user was using a wrong
value for the probation setting there was a LOG_WARNING output stating
that the value had been set to the default value instead. However
the code for setting the value back to defaults was missing.

ASTERISK-27421 #close

Change-Id: If778fe07678a6fd2041eaca7cd78267d0ef4fc6c

21 months agoREADME: Send people to secure websites where available.
Corey Farrell [Sat, 18 Nov 2017 01:36:40 +0000 (20:36 -0500)]
README: Send people to secure websites where available.

We should be sending people to secure web URL's where available.
Update README's and docs.

Change-Id: Id5b1e049b0b18b49a784f1254605aefa244ce19a

21 months agodoxygen: Remove obsolete contents.
Corey Farrell [Sat, 18 Nov 2017 01:54:33 +0000 (20:54 -0500)]
doxygen: Remove obsolete contents.

Remove doxygen contents that have nothing to do with the current state
of Asterisk.

Change-Id: Ic072cc8641f9533a202990ccf275ce87e3efd95c

21 months agores_pjsip: Use reasonable buffer lengths for endpoint identification
Sean Bright [Fri, 17 Nov 2017 15:57:54 +0000 (10:57 -0500)]
res_pjsip: Use reasonable buffer lengths for endpoint identification

Domains themselves can be up to 255 characters long (per RFC 1035), so
our current buffer sizes are wholly inadequate for many use cases.

Change-Id: If3f30a68307f1365a1fe06bc4b854c62842c9292

21 months agomenuselect: Remove ineffective weak attribute detection.
Corey Farrell [Sat, 11 Nov 2017 16:09:29 +0000 (11:09 -0500)]
menuselect: Remove ineffective weak attribute detection.

menuselect detects compiler support for multiple styles of weak
functions.  This is a remnant from 2013 when OPTIONAL_API required weak
functions.  It is no longer correct for menuselect to switch
dependencies from optional to required based on lack of weak function
support.

Note an issue remains - dependencies should switch from optional to
required based on OPTIONAL_API being enabled or disabled.  I don't think
this is possible.  menuselect needs to know at startup if OPTIONAL_API
is enabled or disabled, so the only way to fix this is to remove
OPTIONAL_API from menuselect and create a configure option.  I've left
the code that switches in place but it's preprocessed out.

Additionally removed:
- WEAKREF variable from Asterisk makeopts.in.
- Related disabled code from test_utils.
- Pointless AC_REVISION call from menuselect/configure.ac.

Change-Id: Ifa702e5f98eb45f338b2f131a93354632a8fb389

21 months agoMerge "DEBUG_FD_LEAKS: Add missing FD creators."
Joshua Colp [Fri, 17 Nov 2017 15:26:48 +0000 (09:26 -0600)]
Merge "DEBUG_FD_LEAKS: Add missing FD creators."

21 months agoMerge "Build: Make function constructor/destructor attributes mandatory."
Joshua Colp [Fri, 17 Nov 2017 15:26:33 +0000 (09:26 -0600)]
Merge "Build: Make function constructor/destructor attributes mandatory."

21 months agoacl: Fix allocation related issues.
Corey Farrell [Thu, 16 Nov 2017 15:48:36 +0000 (10:48 -0500)]
acl: Fix allocation related issues.

Add checks for allocation errors, cleanup and report failure when they
occur.

* ast_duplicate_acl_list: Replace log warnings with errors, add missing
  line-feed.
* ast_append_acl: Add missing line-feed to logger message.
* ast_append_ha: Avoid ast_strdupa in loop by moving debug message to
  separate function.
* ast_ha_join: Use two separate calls to ast_str_append to avoid using
  ast_strdupa in a loop.

Change-Id: Ia19eaaeb0b139ff7ce7b971c7550e85c8b78ab76

21 months agoMerge "aoc: Fix memory management issues."
Jenkins2 [Fri, 17 Nov 2017 12:43:17 +0000 (06:43 -0600)]
Merge "aoc: Fix memory management issues."

21 months agobridge_basic: Ignore answer from transfer target when they've timed out.
Joshua Colp [Thu, 16 Nov 2017 15:04:55 +0000 (15:04 +0000)]
bridge_basic: Ignore answer from transfer target when they've timed out.

This is a fun one.

Given the following attended transfer scenario:

1. Transfer target is called
2. Transferer hangs up
3. Transfer target call attempt reaches timeout
4. Transfer target is told to hang up
5. Transfer target answers before channel is hung up
6. Transferer recall target is called

A crash would occur. This is because the transfer target call
attempt, despite being told to hang up, would raise a recall
target answer before the recall target had been answered. As it
had not answered there would be no recall target channel and it
would implode.

This change makes it so that if the transfer target has been
hung up we don't tell the attended transfer code that it has
answered. We also clear out the stimulus that the recall target
has been answered after telling the transfer target to hang up,
in case it was able to raise the information before we told it
to hangup.

ASTERISK-27361

Change-Id: Ifb8b255a9c4d2c5c1b8ad77bf54f659ed286df99

21 months agoaoc: Fix memory management issues.
Corey Farrell [Fri, 17 Nov 2017 01:39:20 +0000 (20:39 -0500)]
aoc: Fix memory management issues.

aoc_publish_blob failed to check for msg allocation error and never
released msg.

Change-Id: Ib31a9ffb81056a0d496a49d7eec795005a44bcd5

21 months agores_pjsip_transport_websocket: Give transport a meaningful description
Sean Bright [Thu, 16 Nov 2017 22:18:16 +0000 (17:18 -0500)]
res_pjsip_transport_websocket: Give transport a meaningful description

We were not \0 terminating this string, so any attempt to print it would
in the best case show an empty string and in the worst case potentially
crash.

Change-Id: I63d96ef8f7516ac02a0f91e22dfa8acdc615042c

21 months agores_pjsip: Use sorcery prefix operation for contact lookup
Sean Bright [Thu, 16 Nov 2017 21:00:20 +0000 (16:00 -0500)]
res_pjsip: Use sorcery prefix operation for contact lookup

This improves performance for registrations assuming that
res_config_astdb is not in use.

Change-Id: I86f37aa9ef07a4fe63448cb881bbadd996834bb1

21 months agoMerge "ast_coredumper: Add ability to use directory other than /tmp"
Joshua Colp [Thu, 16 Nov 2017 21:44:23 +0000 (15:44 -0600)]
Merge "ast_coredumper:  Add ability to use directory other than /tmp"

21 months agoMerge "pjsip / hep: Provide correct local address for Websockets."
Joshua Colp [Thu, 16 Nov 2017 17:53:53 +0000 (11:53 -0600)]
Merge "pjsip / hep: Provide correct local address for Websockets."

21 months agoMerge "sorcery: Add ast_sorcery_retrieve_by_prefix()"
Jenkins2 [Thu, 16 Nov 2017 16:27:00 +0000 (10:27 -0600)]
Merge "sorcery: Add ast_sorcery_retrieve_by_prefix()"

21 months agoMerge "chan_pjsip.c: Improve answer failure log messages."
Joshua Colp [Thu, 16 Nov 2017 16:11:32 +0000 (10:11 -0600)]
Merge "chan_pjsip.c: Improve answer failure log messages."

21 months agoThis patch adds a beanstalk CEL backend.
Nir Simionovich [Thu, 19 Oct 2017 19:44:16 +0000 (15:44 -0400)]
This patch adds a beanstalk CEL backend.

Beanstalkd is a simple to use job queue. It provides a means to
create multiple job queues called "tubes". Each tube can store
multiple jobs, with varying priorities with the queue. Queue
processing is available via a simple TCP socket or via well defined
libraries, avaialble at
https://github.com/kr/beanstalkd/wiki/client-libraries

This module is based upon the beanstalk-client library, available
for download at: https://github.com/deepfryed/beanstalk-client

This module currently doesn't support user defined events.

Change-Id: Ic3a087faeeac045d69a2a018e60e29831ddb95ab

21 months agoMerge "This patch adds a beanstalk CDR backend."
Jenkins2 [Thu, 16 Nov 2017 15:36:40 +0000 (09:36 -0600)]
Merge "This patch adds a beanstalk CDR backend."

21 months agoMerge "audiohook.c: Fix freeing a frame and still using it."
Joshua Colp [Thu, 16 Nov 2017 14:27:04 +0000 (08:27 -0600)]
Merge "audiohook.c: Fix freeing a frame and still using it."

21 months agochan_pjsip.c: Improve answer failure log messages.
Richard Mudgett [Fri, 10 Nov 2017 01:58:12 +0000 (19:58 -0600)]
chan_pjsip.c: Improve answer failure log messages.

* Balanced the session->inv_session refs on answer failure.

Change-Id: I33542d639d37e692cb46550b972a5fcfc3b804b8

21 months agoaudiohook.c: Fix freeing a frame and still using it.
Richard Mudgett [Wed, 15 Nov 2017 00:00:55 +0000 (18:00 -0600)]
audiohook.c: Fix freeing a frame and still using it.

Memory corruption happened to the media frame caches when an audio hook
freed a frame when it shouldn't.  I think the freed frame was because a
jitter buffer interpolated a missing frame and the audio hook
unconditionally freed it.

* Made audiohook.c:audio_audiohook_write_list() not free an interpolated
frame if it is the same frame as what was passed into the routine.

* Made plc.c:normalise_history() use memmove() instead of memcpy() on a
memory block that could overlap.  Found by valgrind investigating this
issue.

ASTERISK-27238
ASTERISK-27412

Change-Id: I548d86894281fc4529aefeb9f161f2131ecc6fde

21 months agoapp_record: Don't set RECORD_STATUS chan var until file is closed
George Joseph [Wed, 15 Nov 2017 18:10:16 +0000 (11:10 -0700)]
app_record:  Don't set RECORD_STATUS chan var until file is closed

We've been calling pbx_builtin_setvar_helper to set the
RECORD_STATUS variable before actually closing the recorded file.
If a client is watching VarSet events and tries to do something with
the file when a RECORD_STATUS event is seen, they might attempt to
do so while the file it's still open.

We now delay calling pbx_builtin_setvar_helper until after we close
the file.

ASTERISK-27423

Change-Id: I7fe9de99953e46b4bafa2b38cf151fe8f6488254

21 months agoast_coredumper: Add ability to use directory other than /tmp
George Joseph [Tue, 7 Nov 2017 14:25:59 +0000 (07:25 -0700)]
ast_coredumper:  Add ability to use directory other than /tmp

The OUTPUTDIR environment variable can now be set either in the
environment itself or in ast_debug_tools.conf.  If set, it's used
for all work products instead of /tmp.

Also added the --tarball-config option that includes the contents
of /etc/asterisk when either --tarball-coredumps or --tarball-results
are used.

Change-Id: I66b2553319df61caea5b313d084f51978f730b4c

21 months agoMerge "bundled_pjproject: Update to 2.7.1"
Jenkins2 [Tue, 14 Nov 2017 22:03:57 +0000 (16:03 -0600)]
Merge "bundled_pjproject: Update to 2.7.1"

21 months agoMerge "bundled_pjproject: sip_parser: Fix return code in pjsip_find_msg"
Joshua Colp [Tue, 14 Nov 2017 20:49:05 +0000 (14:49 -0600)]
Merge "bundled_pjproject: sip_parser:  Fix return code in pjsip_find_msg"

21 months agopjsip / hep: Provide correct local address for Websockets.
Joshua Colp [Mon, 13 Nov 2017 13:14:23 +0000 (13:14 +0000)]
pjsip / hep: Provide correct local address for Websockets.

Previously for PJSIP the local address of WebSocket connections
was set to the remote address. For logging purposes this is
not particularly useful.

The WebSocket API has been extended to allow the local
address to be queried and this is used in PJSIP to set the
local address to the correct value.

The PJSIP HEP support has also been tweaked so that reliable
transports always use the local address on the transport
and do not try to (wrongly) guess. As they are connection
based it is impossible for the source to be anything else.

ASTERISK-26758
ASTERISK-27363

Change-Id: Icd305fd038ad755e2682ab2786e381f6bf29e8ca

21 months agoMerge "core: Fix configuration of remote console socket path."
Joshua Colp [Tue, 14 Nov 2017 16:31:40 +0000 (10:31 -0600)]
Merge "core: Fix configuration of remote console socket path."

21 months agoMerge "pjsip: Add patch to allow all transports to be destroyed."
Jenkins2 [Tue, 14 Nov 2017 15:06:33 +0000 (09:06 -0600)]
Merge "pjsip: Add patch to allow all transports to be destroyed."

21 months agoMerge "core: Use ast_alertpipe for Asterisk signal monitoring thread."
Joshua Colp [Tue, 14 Nov 2017 13:32:24 +0000 (07:32 -0600)]
Merge "core: Use ast_alertpipe for Asterisk signal monitoring thread."

21 months agoMerge "core: Add cache_media_frames debugging option."
Jenkins2 [Tue, 14 Nov 2017 12:56:54 +0000 (06:56 -0600)]
Merge "core: Add cache_media_frames debugging option."

21 months agoMerge "alertpipe: Correct documented return of ast_alertpipe_write."
Joshua Colp [Tue, 14 Nov 2017 11:46:58 +0000 (05:46 -0600)]
Merge "alertpipe: Correct documented return of ast_alertpipe_write."

21 months agoalertpipe: Correct documented return of ast_alertpipe_write.
Corey Farrell [Mon, 13 Nov 2017 23:47:46 +0000 (18:47 -0500)]
alertpipe: Correct documented return of ast_alertpipe_write.

Change-Id: I4ea49c441890a81384144479dc93ab5a3989486d

21 months agoMerge "vectors: Add new macro and a string vector definition."
Jenkins2 [Mon, 13 Nov 2017 23:26:22 +0000 (17:26 -0600)]
Merge "vectors: Add new macro and a string vector definition."

21 months agoMerge "menuselect: Delete and ignore aclocal.m4."
Joshua Colp [Mon, 13 Nov 2017 23:01:35 +0000 (17:01 -0600)]
Merge "menuselect: Delete and ignore aclocal.m4."

21 months agocore: Use ast_alertpipe for Asterisk signal monitoring thread.
Corey Farrell [Fri, 10 Nov 2017 01:47:27 +0000 (20:47 -0500)]
core: Use ast_alertpipe for Asterisk signal monitoring thread.

Reduce the signal monitoring thread file descriptor use from two to one
on systems that support eventfd.

Change-Id: Id4041a237d481ff699639e153ea6982fee14a462

21 months agocore: Fix configuration of remote console socket path.
Corey Farrell [Mon, 13 Nov 2017 22:20:27 +0000 (17:20 -0500)]
core: Fix configuration of remote console socket path.

The remote console socket path is the combination of asterisk.conf
settings astrundir from [directories] and astctl from [files].
Unconditionally combine the two strings after processing all values
to ensure we end up with the correct socket path.

ASTERISK-27415

Change-Id: Ib1e2805d55d6b0955c6430a1a2a93acbf9b091e8

21 months agobundled_pjproject: sip_parser: Fix return code in pjsip_find_msg
George Joseph [Fri, 10 Nov 2017 16:37:16 +0000 (09:37 -0700)]
bundled_pjproject: sip_parser:  Fix return code in pjsip_find_msg

The default return code for pjsip_find_msg was PJ_SUCCESS so if
a Content-Length header wasn't found at all, pjsip_find_msg was
returning PJ_SUCCESS instead of PJSIP_EMISSINGHDR.

Also added the volatile keyword to a few variables that are used
both inside and outside the PJ_TRY/PJ_CATCH block.

Partial fix for ASTERISK_27408

Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a

21 months agobundled_pjproject: Update to 2.7.1
Ben Ford [Mon, 13 Nov 2017 20:35:14 +0000 (14:35 -0600)]
bundled_pjproject: Update to 2.7.1

Update from 2.7 to 2.7.1 for bundled pjproject. Changed version
and removed patch files included in the update.

Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357

21 months agosorcery: Add ast_sorcery_retrieve_by_prefix()
Sean Bright [Thu, 9 Nov 2017 14:21:38 +0000 (09:21 -0500)]
sorcery: Add ast_sorcery_retrieve_by_prefix()

Some consumers of the sorcery API use ast_sorcery_retrieve_by_regex
only so that they can anchor the potential match as a prefix and not
because they truly need regular expressions.

Rather than using regular expressions for simple prefix lookups, add
a new operation - ast_sorcery_retrieve_by_prefix - that does them.

Change-Id: I56f4e20ba1154bd52281f995c27a429a854f6a79

21 months agoCLI: Create ast_cli_completion_vector.
Corey Farrell [Tue, 7 Nov 2017 23:07:35 +0000 (18:07 -0500)]
CLI: Create ast_cli_completion_vector.

This is a rewrite of ast_cli_completion_matches using a vector to build
the list.  The original function calls the vector version, NULL
terminates the vector and extracts the elements array.

One change in behavior the results are now sorted and deduplicated. This
will solve bugs where some duplicate checking was done before the list
was sorted.

Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519

21 months agovectors: Add new macro and a string vector definition.
Corey Farrell [Tue, 7 Nov 2017 20:00:33 +0000 (15:00 -0500)]
vectors: Add new macro and a string vector definition.

* AST_VECTOR_STEAL_ELEMENTS - steal the array of elements for use
  with non-vector code.
* struct ast_vector_string - a vector of 'char *'.

Change-Id: I104d1b204be03fccf67e02a195596adcb5ab1e42

21 months agoMerge "Build System: Disable parallel make in the root Makefile."
Joshua Colp [Mon, 13 Nov 2017 13:47:38 +0000 (07:47 -0600)]
Merge "Build System: Disable parallel make in the root Makefile."

21 months agoMerge "res_pjsip_pubsub: Ensure remote URI contains URI only."
Jenkins2 [Mon, 13 Nov 2017 13:11:57 +0000 (07:11 -0600)]
Merge "res_pjsip_pubsub: Ensure remote URI contains URI only."

21 months agocore: Add cache_media_frames debugging option.
Richard Mudgett [Sat, 11 Nov 2017 19:01:47 +0000 (13:01 -0600)]
core: Add cache_media_frames debugging option.

The media frame cache gets in the way of finding use after free errors of
media frames.  Tools like valgrind and MALLOC_DEBUG don't know when a
frame is released because it gets put into the cache instead of being
freed.

* Added the "cache_media_frames" option to asterisk.conf.  Disabling the
option helps track down media frame mismanagement when using valgrind or
MALLOC_DEBUG.  The cache gets in the way of determining if the frame is
used after free and who freed it.  NOTE: This option has no effect when
Asterisk is compiled with the LOW_MEMORY compile time option enabled
because the cache code does not exist.

To disable the media frame cache simply disable the cache_media_frames
option in asterisk.conf and restart Asterisk.

Sample asterisk.conf setting:
[options]
cache_media_frames=no

ASTERISK-27413

Change-Id: I0ab2ce0f4547cccf2eb214901835c2d951b78c00

21 months agoframe.c: Make ast_frame_free()/ast_frfree() NULL tolerant
Richard Mudgett [Sat, 11 Nov 2017 15:42:01 +0000 (09:42 -0600)]
frame.c: Make ast_frame_free()/ast_frfree() NULL tolerant

Change-Id: Ic49d821ef88ada38a31bdd835b9531443c55d793

21 months agomenuselect: Delete and ignore aclocal.m4.
Corey Farrell [Sat, 11 Nov 2017 04:04:53 +0000 (23:04 -0500)]
menuselect: Delete and ignore aclocal.m4.

This file is temporary output from the bootstrap.sh command, it does not
need to be committed.

Change-Id: Ie0fd113aff6eac44924c0bd0c900833c6c86a6d9

21 months agoBuild: Make function constructor/destructor attributes mandatory.
Corey Farrell [Tue, 31 Oct 2017 03:09:17 +0000 (23:09 -0400)]
Build: Make function constructor/destructor attributes mandatory.

This change causes the configure script to fail if the C compiler does
not support both function attributes constructor and destructor.  These
were already required as modules cannot function without these attributes
and Asterisk requires modules.

This also has AST_GCC_ATTRIBUTE set a variable
ax_cv_have_func_attribute_$1.  This is the same variable name used by
autoconf-archive's AX_GCC_FUNC_ATTRIBUTE, used for the same purpose.

Change-Id: Id68e8a1447f2a6d707c54b56350e7bfdb33fb663

21 months agoMerge "core: Remove disabled code."
Joshua Colp [Fri, 10 Nov 2017 14:00:32 +0000 (08:00 -0600)]
Merge "core: Remove disabled code."

21 months agoMerge "chan_pjsip.c: Fix uninitialized cause value on failure."
Joshua Colp [Fri, 10 Nov 2017 14:00:12 +0000 (08:00 -0600)]
Merge "chan_pjsip.c: Fix uninitialized cause value on failure."

21 months agopjsip: Add patch to allow all transports to be destroyed.
Joshua Colp [Fri, 10 Nov 2017 13:06:38 +0000 (13:06 +0000)]
pjsip: Add patch to allow all transports to be destroyed.

If a transport is created with the same transport type, source
IP address, and source port as one that already exists the old
transport is moved into a linked list called "tp_list".

If this old transport is later shutdown it will not be destroyed
as the process checks whether the transport is valid or not. This
check does not look at the "tp_list" when making the determination
causing the transport to not be destroyed.

This change updates the logic to query not just the main storage
method for transports but also the "tp_list".

Upstream issue https://trac.pjsip.org/repos/ticket/2061

ASTERISK-27411

Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429

21 months agocore: Remove disabled code.
Corey Farrell [Fri, 10 Nov 2017 02:34:32 +0000 (21:34 -0500)]
core: Remove disabled code.

handle_quit has been disabled since 2003, remove it.

Change-Id: Idc3aaa6c81676160547078f9b71e8aa43de2db18

21 months agoMerge "stasis_bridges.c: Fix off-nominal json memory leaks."
Joshua Colp [Fri, 10 Nov 2017 00:05:09 +0000 (18:05 -0600)]
Merge "stasis_bridges.c: Fix off-nominal json memory leaks."

21 months agoBuild System: Disable parallel make in the root Makefile.
Corey Farrell [Thu, 9 Nov 2017 19:24:46 +0000 (14:24 -0500)]
Build System: Disable parallel make in the root Makefile.

This ensures that the root Makefile runs only a single target at a time.
SUBMAKE will still honor requested parallelism, so 'make -j8' will build
one directory at a time but allow 8 jobs at once when building a sub
directory.

This will fix some display glitches related to rebuild of XML
documentation.  It will also prevent some edge case errors where
bundled pjproject needs to be rebuild before other parts of Asterisk.

Change-Id: I4f2ec6fbbec1ada0ccb1109a28ea303524239b1e

21 months agoMerge "res_pjsip_registrar.c: Fix AOR and pjproject group deadlock."
Kevin Harwell [Thu, 9 Nov 2017 17:48:34 +0000 (11:48 -0600)]
Merge "res_pjsip_registrar.c: Fix AOR and pjproject group deadlock."

21 months agochan_pjsip.c: Fix uninitialized cause value on failure.
Richard Mudgett [Thu, 30 Mar 2017 01:46:56 +0000 (20:46 -0500)]
chan_pjsip.c: Fix uninitialized cause value on failure.

Change-Id: I3f9dd3c31bd582e54a30381500077de2319d8cc3

21 months agoMerge "res_pjsip_pubsub: Fix multiple leaks on failure to append vectors."
Joshua Colp [Thu, 9 Nov 2017 09:44:56 +0000 (03:44 -0600)]
Merge "res_pjsip_pubsub: Fix multiple leaks on failure to append vectors."

21 months agoMerge "res_pjsip_history: Fix multiple leaks on vector append failure."
Joshua Colp [Thu, 9 Nov 2017 09:44:37 +0000 (03:44 -0600)]
Merge "res_pjsip_history: Fix multiple leaks on vector append failure."

21 months agoMerge "res_pjsip_session: Fix multiple leaks."
Joshua Colp [Thu, 9 Nov 2017 09:43:58 +0000 (03:43 -0600)]
Merge "res_pjsip_session: Fix multiple leaks."

21 months agoMerge "main/sdp_state: Check for errors from ast_stream_topology_set_stream."
Joshua Colp [Thu, 9 Nov 2017 09:43:35 +0000 (03:43 -0600)]
Merge "main/sdp_state: Check for errors from ast_stream_topology_set_stream."

21 months agoMerge "bridge_softmix: Note why ast_stream_topology_set_stream cannot fail."
Joshua Colp [Thu, 9 Nov 2017 09:42:51 +0000 (03:42 -0600)]
Merge "bridge_softmix: Note why ast_stream_topology_set_stream cannot fail."

21 months agoMerge "res_pjsip_session: Check for errors from ast_stream_topology_set_stream."
Joshua Colp [Thu, 9 Nov 2017 09:42:34 +0000 (03:42 -0600)]
Merge "res_pjsip_session: Check for errors from ast_stream_topology_set_stream."

21 months agoMerge "res_pjsip_t38: Better error checking for t38_create_media_state."
Joshua Colp [Wed, 8 Nov 2017 19:11:27 +0000 (13:11 -0600)]
Merge "res_pjsip_t38: Better error checking for t38_create_media_state."

21 months agoDEBUG_FD_LEAKS: Add missing FD creators.
Corey Farrell [Wed, 8 Nov 2017 07:40:22 +0000 (02:40 -0500)]
DEBUG_FD_LEAKS: Add missing FD creators.

This adds FD tracking for the following functions:
* eventfd
* timerfd_create
* socketpair
* accept

ASTERISK-27404

Change-Id: Id6848fe904ade2d34eb39d2a20bd6b223e1111fc

21 months agobridge_softmix: Note why ast_stream_topology_set_stream cannot fail.
Corey Farrell [Tue, 7 Nov 2017 17:49:35 +0000 (12:49 -0500)]
bridge_softmix: Note why ast_stream_topology_set_stream cannot fail.

This appeared in my audit of ast_stream_topology_set_stream callers
not checking for errors but in this situation the call cannot fail.
Add comment so this can be ignored in the future.

Change-Id: I91d25704859efbe50b8b82cfe1cd3c40ba177c9f

21 months agoMerge "AST-2017-009: pjproject: Add validation of numeric header values"
George Joseph [Wed, 8 Nov 2017 15:52:47 +0000 (09:52 -0600)]
Merge "AST-2017-009: pjproject: Add validation of numeric header values"

21 months agoMerge "AST-2017-011 - res_pjsip_session: session leak when a call is rejected"
George Joseph [Wed, 8 Nov 2017 15:45:24 +0000 (09:45 -0600)]
Merge "AST-2017-011 - res_pjsip_session: session leak when a call is rejected"

21 months agoMerge "AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun"
George Joseph [Wed, 8 Nov 2017 14:25:54 +0000 (08:25 -0600)]
Merge "AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun"

21 months agoMerge "res_pjproject.c: Fix ast_strdup() alloc failure."
Joshua Colp [Wed, 8 Nov 2017 13:38:45 +0000 (07:38 -0600)]
Merge "res_pjproject.c: Fix ast_strdup() alloc failure."

21 months agoAST-2017-011 - res_pjsip_session: session leak when a call is rejected
Kevin Harwell [Thu, 19 Oct 2017 18:35:16 +0000 (13:35 -0500)]
AST-2017-011 - res_pjsip_session: session leak when a call is rejected

A previous commit made it so when an invite session transitioned into a
disconnected state destruction of the Asterisk pjsip session object was
postponed until either a transport error occurred or the event timer
expired. However, if a call was rejected (for instance a 488) before the
session was fully established the event timer may not have been initiated,
or it was canceled without triggering either of the session finalizing states
mentioned above.

Really the only time destruction of the session should be delayed is when a
BYE is being transacted. This is because it's possible in some cases for the
session to be disconnected, but the BYE is still transacting.

This patch makes it so the session object always gets released (no more
memory leak) when the pjsip session is in a disconnected state. Except when
the method is a BYE. Then it waits until a transport error occurs or an event
timeout.

ASTERISK-27345 #close

Reported by: Corey Farrell

Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed

21 months agoAST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun
Richard Mudgett [Tue, 3 Oct 2017 21:19:52 +0000 (16:19 -0500)]
AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun

cdr_object_update_party_b_userfield_cb() could overrun the fixed buffer if
the supplied string is too long.  The long string could be supplied by
external means using the CDR(userfield) function.

This may seem reminiscent to AST-2017-001 (ASTERISK_26897) and it is.  The
earlier patch fixed the buffer overrun for Party A's userfield while this
patch fixes the same thing for Party B's userfield.

ASTERISK-27337

Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652

21 months agoAST-2017-009: pjproject: Add validation of numeric header values
George Joseph [Thu, 19 Oct 2017 18:53:32 +0000 (12:53 -0600)]
AST-2017-009: pjproject: Add validation of numeric header values

Parsing the numeric header fields like cseq, ttl, port, etc. all
had the potential to overflow, either causing unintended values to
be captured or, if the values were subsequently converted back to
strings, a buffer overrun.  To address this, new "strto" functions
have been created that do range checking and those functions are
used wherever possible in the parser.

 * Created pjlib/include/limits.h and pjlib/include/compat/limits.h
   to either include the system limits.h or define common numeric
   limits if there is no system limits.h.

 * Created strto*_validate functions in sip_parser that take bounds
   and on failure call the on_str_parse_error function which prints
   an error message and calls PJ_THROW.

 * Updated sip_parser to validate the numeric fields.

 * Fixed an issue in sip_transport that prevented error messages
   from being properly displayed.

 * Added "volatile" to some variables referenced in PJ_CATCH blocks
   as the optimizer was sometimes optimizing them away.

 * Fixed length calculation in sip_transaction/create_tsx_key_2543
   to account for signed ints being 11 characters, not 9.

ASTERISK-27319
Reported by: Youngsung Kim at LINE Corporation

Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff

21 months agoMerge "stream: Return error from ast_stream_topology_set_stream."
Jenkins2 [Wed, 8 Nov 2017 12:06:51 +0000 (06:06 -0600)]
Merge "stream: Return error from ast_stream_topology_set_stream."