asterisk/asterisk.git
22 months agosched: Make sched_settime() return void because it cannot fail
Sean Bright [Thu, 17 Jan 2019 15:56:35 +0000 (10:56 -0500)]
sched: Make sched_settime() return void because it cannot fail

Change-Id: I66b8b2b2778f186919d73ae9bf592104b8fb1cd5

22 months agores_pjsip_transport_websocket: Don't assert on 0 length payloads
Sean Bright [Fri, 4 Jan 2019 23:14:45 +0000 (18:14 -0500)]
res_pjsip_transport_websocket: Don't assert on 0 length payloads

When --enable-dev-mode is used, pjsip_tpmgr_receive_packet() will assert
if passed a payload length of 0, so treat empty frames as if we didn't
receive them.

Change-Id: I9c5fdccd89cc8d2f3ed7e3ee405ef0fc78178f48

22 months agoMerge "res_pjsip: add option to enable ContactStatus event when contact is updated"
Joshua C. Colp [Mon, 14 Jan 2019 14:38:14 +0000 (08:38 -0600)]
Merge "res_pjsip: add option to enable ContactStatus event when contact is updated"

22 months agoMerge "stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure."
Joshua C. Colp [Mon, 14 Jan 2019 14:26:32 +0000 (08:26 -0600)]
Merge "stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure."

22 months agoMerge "res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled."
Joshua C. Colp [Mon, 14 Jan 2019 14:03:27 +0000 (08:03 -0600)]
Merge "res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled."

22 months agoMerge "RTP: reset DTMF last seqno/timestamp on RTP renegotiation"
Joshua C. Colp [Mon, 14 Jan 2019 14:03:03 +0000 (08:03 -0600)]
Merge "RTP: reset DTMF last seqno/timestamp on RTP renegotiation"

22 months agoMerge "app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail"
Joshua C. Colp [Mon, 14 Jan 2019 12:19:45 +0000 (06:19 -0600)]
Merge "app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail"

22 months agostasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure.
mohitdhiman [Sat, 12 Jan 2019 08:29:12 +0000 (13:59 +0530)]
stasis/endpoint: Fix memory leak of channel_ids in ast_endpoint structure.

During Bridging of two channels if masquerade operation is performed on a
channel (clone channel) which was created with endpoint details
(ast_channel_alloc_with_endpoint()) and the original channel which is created
without endpoint details (ast_channel_alloc()) then both the channels must
exchange their endpoint details or else after masquerade when clone channel
is being destroyed the endpoint cleanup callbacks will be destroyed too and
after call completion unique_id of original channel will still be there in
ast_endpoint structure's channel_ids container.

ASTERISK-28197

Change-Id: I97ce73da390af20fd082fb09d722a6fe9cb2f39d

22 months agores_pjsip: add option to enable ContactStatus event when contact is updated
Alexei Gradinari [Fri, 11 Jan 2019 15:48:36 +0000 (10:48 -0500)]
res_pjsip: add option to enable ContactStatus event when contact is updated

The commit I2f97ebfa79969a36a97bb7b9afd5b6268cf1a07d removed sending out
the ContactStatus AMI event when a contact is updated.
Thist change broke things which rely on old behavior.

This patch adds a new PJSIP global configuration option
'send_contact_status_on_update_registration' to be able to preserve old
ContactStatus behavior.
By default new behavior, i.e. the ContactStatus event will not be sent when a
device refreshes its registration.

Change-Id: I706adf7584e7077eb6bde6d9799ca408bc82ce46

22 months agores_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled.
Joshua Colp [Mon, 7 Jan 2019 14:06:37 +0000 (14:06 +0000)]
res_pjsip_sdp_rtp: Only enable abs-send-time when WebRTC is enabled.

For video streams it was possible for the abs-send-time information
to be placed into RTP streams even if not negotiated. Depending on
the endpoint in use this could cause video to not flow.

We now only enable abs-send-time for negotiation if WebRTC is enabled.

ASTERISK-28230

Change-Id: I0eb682302f8da3a4ea3c42e839208d55f825ed0c

22 months agoRAII: Change order or variables in clang version
Diederik de Groot [Sat, 5 Jan 2019 17:14:26 +0000 (18:14 +0100)]
RAII: Change order or variables in clang version

This prevents use-after-scope issues when unwinding the stack,
which happens in reverse order. The varname variable needs to
remain alive for the destruction to be able to access it.
Issue was found using clang + address-sanitizer.

ASTERISK-28232 #close

Change-Id: I00811c34ae910836a5fb6d22304528aef92624db

22 months agoRTP: reset DTMF last seqno/timestamp on RTP renegotiation
Alexei Gradinari [Fri, 4 Jan 2019 15:57:06 +0000 (10:57 -0500)]
RTP: reset DTMF last seqno/timestamp on RTP renegotiation

The remote side may start a new stream when renegotiating RTP.
Need to reset the DTMF last sequence number and the timestamp
of the last END packet on RTP renegotiation.

If the new time stamp is lower then the timestamp of the last DTMF END packet
the asterisk drops all DTMF frames as out of order.

This bug was caught using Cisco ip-phone SPA5XX and codec g722.
On SIP session update the SPA50X resets stream and a new timestamp is twice
smaller then the previous.

ASTERISK-28162 #close

Change-Id: Ic72b4497e74d801b27a635559c1cf29c16c95254

22 months agoMerge "ast_coredumper: Refactor the pid determination process"
Joshua C. Colp [Fri, 4 Jan 2019 14:27:04 +0000 (08:27 -0600)]
Merge "ast_coredumper:  Refactor the pid determination process"

22 months agoMerge "stasis: Fix ABI between DEVMODE and non-DEVMODE."
Friendly Automation [Thu, 3 Jan 2019 23:39:22 +0000 (17:39 -0600)]
Merge "stasis: Fix ABI between DEVMODE and non-DEVMODE."

22 months agoMerge "stasic.c: Fix printf format type mismatches with arguments."
Friendly Automation [Thu, 3 Jan 2019 11:38:16 +0000 (05:38 -0600)]
Merge "stasic.c: Fix printf format type mismatches with arguments."

22 months agoapp_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail
Bryan Boatright [Wed, 2 Jan 2019 17:44:41 +0000 (11:44 -0600)]
app_voicemail: Fix Channel variable VM_MESSAGEFILE for "urgent" voicemail

If a voicemail is marked "urgent" then the VM_MESSAGEFILE channel variable is
not updated correctly since urgent messages are in a different directory. The
fix is to update the channel variable when the path to the urgent message is
created.

ASTERISK-28225

Change-Id: I8efbace06e6122ea0793f7bdb073d4378e8274ca

22 months agoapp_queue: Fix crash when using 'b' option on non-ringall queue.
Joshua Colp [Wed, 2 Jan 2019 17:33:58 +0000 (17:33 +0000)]
app_queue: Fix crash when using 'b' option on non-ringall queue.

When using the 'b' option to Queue with a queue that was not configured
for ring all a crash would occur as the wrong pointer would be used.

ASTERISK-28218

Change-Id: If1390f64e321047dff24fd2410c95dde74904980

22 months agostasic.c: Fix printf format type mismatches with arguments.
Richard Mudgett [Wed, 19 Dec 2018 19:02:35 +0000 (13:02 -0600)]
stasic.c: Fix printf format type mismatches with arguments.

An int64_t is not likely the same size as a long.

* Changed the int64_t values in the statistics structs to longs so casting
is not necessary when generating the formatted CLI output.  The offending
members did not need to be int64_t anyway as they were only set by an int
type variable which was already truncating bits.

* Reordered the statistics structs to reduce potential padding bytes.

Change-Id: Ic090a070e9dc4ca650ebdb9c01ed50a581289962

22 months agoMerge "backtrace.c: Fix casting pointer to/from integral type."
George Joseph [Wed, 2 Jan 2019 15:51:36 +0000 (09:51 -0600)]
Merge "backtrace.c: Fix casting pointer to/from integral type."

23 months agostasis: Fix ABI between DEVMODE and non-DEVMODE.
Corey Farrell [Wed, 26 Dec 2018 17:49:57 +0000 (12:49 -0500)]
stasis: Fix ABI between DEVMODE and non-DEVMODE.

Eliminate differences with DEVMODE prototypes for public functions.

ASTERISK-28212 #close

Change-Id: I872c04842ab6b61e9dd6d37e4166bc619aa20626

23 months agoRevert "stasis_cache: Stop caching stasis subscription change messages"
George Joseph [Wed, 26 Dec 2018 16:26:36 +0000 (11:26 -0500)]
Revert "stasis_cache:  Stop caching stasis subscription change messages"

This reverts commit 5ec6d2c33e3b02755e0b2ea3fc94f048af5c741f.

This commit caused issues with polling when combined with
the revert commit "Revert "app_voicemail: Remove need to subscribe to stasis"

ASTERISK-28222
Reported by: abelbeck

Change-Id: I1e83a433e4202574181bc128dce876ef24936a52

23 months agoast_coredumper: Refactor the pid determination process
George Joseph [Mon, 24 Dec 2018 17:42:36 +0000 (10:42 -0700)]
ast_coredumper:  Refactor the pid determination process

In order to get a dump of the running process, we need to find the
pid of the main asterisk process.  This can be tricky if there are
also instances of "asterisk -r" running or if an alternate location
for asterisk.conf was specified on the command line with the -C
option that also specified an alternation location for the pid file.

So now...

1. We find the asterisk executable with "which" or the --asterisk-bin
   command line option.
2. If there's only 1 process with an executable path that matches,
   we use that pid.  If not...
3. We try "<asterisk-bin> -rx 'core show settings'" and parse the
   output to find the pidfile, then read that for the pid.  If that
   didn't work...
4. We get a list of all the pids matching <asterisk-bin> and look
   in /proc/<pid>/cmdline for a -C argument and retry the "core show
   settings" using the same -C option.  We can't parse the output
   of "ps" to get the -C path because it may contain spaces.  The
   contents of /proc/<pid>/cmdline are delimited by NULLs.  For BSDs
   we may have to mount /proc first. :(

ASTERISK-28221
Reported by: Andrew Nagy

Change-Id: I8aa1f3f912f949df2b5348908803c636bde1d57c

23 months agobacktrace.c: Fix casting pointer to/from integral type.
Richard Mudgett [Wed, 19 Dec 2018 18:39:08 +0000 (12:39 -0600)]
backtrace.c: Fix casting pointer to/from integral type.

The backtrace library bfd.h include file does not get the sizes of
pointers and ints right on some platforms.  On my old test box the size
of bfd_vma is 8 while the size of a pointer is 4.  gcc on the box
complains of the integer casting to/from pointers size mismatch.

* uintptr_t to the rescue by doing an appropriate two stage cast.

Change-Id: Icb2621583f50c8728de08a3c824d95fe53cc45d0

23 months agoMerge "res/res_ari: Add additional hangup reasons"
Friendly Automation [Wed, 19 Dec 2018 11:12:15 +0000 (05:12 -0600)]
Merge "res/res_ari: Add additional hangup reasons"

23 months agoMerge "app_voicemail: Don't delete mailbox state unless mailbox is deleted"
Friendly Automation [Wed, 19 Dec 2018 11:08:00 +0000 (05:08 -0600)]
Merge "app_voicemail:  Don't delete mailbox state unless mailbox is deleted"

23 months agoMerge "res_pjsip: Patch for res_pjsip_* module load/reload crash"
George Joseph [Tue, 18 Dec 2018 16:42:49 +0000 (10:42 -0600)]
Merge "res_pjsip: Patch for res_pjsip_* module load/reload crash"

23 months agoMerge "res_rtp_asterisk: Remove some unused structure fields."
George Joseph [Tue, 18 Dec 2018 16:42:26 +0000 (10:42 -0600)]
Merge "res_rtp_asterisk: Remove some unused structure fields."

23 months agoapp_voicemail: Don't delete mailbox state unless mailbox is deleted
George Joseph [Tue, 18 Dec 2018 16:33:50 +0000 (09:33 -0700)]
app_voicemail:  Don't delete mailbox state unless mailbox is deleted

The free_user function was automatically deleting the stasis mailbox
state but this only makes sense when the mailbox is actually
deleted, not just the structure freed.  This was causing issues
where leave_voicemail would publish the mwi message to stasis and
delete the state before the message could be processed by
res_pjsip_mwi.

* Removed the delete of state from free_user().

* Created a new free_user_final() function that both frees the data
  structure and deletes the state.  This function is only called
  during module load/unload where it's appropriate to delete the
  state.

ASTERISK-28215

Change-Id: I305e8b3c930e9ac41d901e5dc8a58fd7904d98dd

23 months agoMerge "res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set"
Joshua C. Colp [Mon, 17 Dec 2018 15:34:47 +0000 (09:34 -0600)]
Merge "res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set"

23 months agores_rtp_asterisk: Remove some unused structure fields.
Sean Bright [Fri, 14 Dec 2018 17:52:45 +0000 (12:52 -0500)]
res_rtp_asterisk: Remove some unused structure fields.

All of the fields that were removed were no longer referenced except for
'lastrxts' and 'rxseqno' which were only ever written to.

Change-Id: I5a5d31eb33e97663843698f58d0d97f22a76627c

23 months agoMerge "bridge_builtin_features.c: Set auto(mix)mon variables on both channels"
Joshua C. Colp [Fri, 14 Dec 2018 14:37:38 +0000 (08:37 -0600)]
Merge "bridge_builtin_features.c: Set auto(mix)mon variables on both channels"

23 months agores_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set
Sean Bright [Thu, 13 Dec 2018 21:56:50 +0000 (16:56 -0500)]
res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set

The profile-iop octet (the 2nd) of profile-level-id can be zero
according to RFC 6184 Section 8.1. So we ignore its value when deciding
to include profile-level-id in the outgoing SDP.

ASTERISK-27959 #close
Reported by: David Kuehling

Change-Id: Id28cd916a3d7748058fe9609b585d07d9e243f73

23 months agoMerge "confbridge: announce to the marked users when they join an empty conference"
Joshua C. Colp [Thu, 13 Dec 2018 14:00:06 +0000 (08:00 -0600)]
Merge "confbridge: announce to the marked users when they join an empty conference"

23 months agobridge_builtin_features.c: Set auto(mix)mon variables on both channels
Sean Bright [Tue, 11 Dec 2018 20:49:03 +0000 (15:49 -0500)]
bridge_builtin_features.c: Set auto(mix)mon variables on both channels

This is how features behaved up through Asterisk 11, but was changed
when the new bridging framework was implemented in Asterisk 12.

Reported by rrittgarn in #asterisk.

Change-Id: I72cf86223947a8118c75f46e2c603dbc11e3125b

23 months agoMerge "utils: Don't set or clear flags that don't need setting or clearing"
Joshua C. Colp [Wed, 12 Dec 2018 19:12:19 +0000 (13:12 -0600)]
Merge "utils: Don't set or clear flags that don't need setting or clearing"

23 months agoMerge "stasis: Add statistics gathering in developer mode."
Friendly Automation [Wed, 12 Dec 2018 19:08:23 +0000 (13:08 -0600)]
Merge "stasis: Add statistics gathering in developer mode."

23 months agoMerge "Use non-blocking socket() and pipe() wrappers"
Joshua C. Colp [Wed, 12 Dec 2018 17:31:00 +0000 (11:31 -0600)]
Merge "Use non-blocking socket() and pipe() wrappers"

23 months agoconfbridge: announce to the marked users when they join an empty conference
Alexei Gradinari [Fri, 7 Dec 2018 20:22:29 +0000 (15:22 -0500)]
confbridge: announce to the marked users when they join an empty conference

Currently the file sound_only_person is not played when a marked
user (with announce_only_user=yes) joins an empty conference.

This patch fixes it.

ASTERISK-28201 #close

Change-Id: I85b67687e6b220939c3af8091d83a70a7b174cf4

23 months agostasis: Add statistics gathering in developer mode.
Joshua C. Colp [Fri, 30 Nov 2018 11:40:40 +0000 (07:40 -0400)]
stasis: Add statistics gathering in developer mode.

This change adds statistics gathering to Stasis topics,
subscriptions, and message types. These can be viewed using
CLI commands and provide insight into how Stasis is used
and how long certain operations take to execute.

These are only available when Asterisk is compiled in
developer mode and do not have any impact under normal
operation.

ASTERISK-28117

Change-Id: I94411b53767f89ee01714daaecf0c2f1666e863f

23 months agoMerge "stasis: Allow filtering by formatter"
Friendly Automation [Wed, 12 Dec 2018 17:09:19 +0000 (11:09 -0600)]
Merge "stasis:  Allow filtering by formatter"

23 months agoMerge "build: Update config.guess and config.sub"
Joshua C. Colp [Wed, 12 Dec 2018 17:05:30 +0000 (11:05 -0600)]
Merge "build: Update config.guess and config.sub"

23 months agoMerge "pjproject_bundled: check whether UPDATE is supported on outgoing calls"
George Joseph [Wed, 12 Dec 2018 16:51:57 +0000 (10:51 -0600)]
Merge "pjproject_bundled: check whether UPDATE is supported on outgoing calls"

23 months agoMerge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit""
George Joseph [Tue, 11 Dec 2018 20:18:25 +0000 (14:18 -0600)]
Merge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit""

23 months agoUse non-blocking socket() and pipe() wrappers
Sean Bright [Tue, 11 Dec 2018 14:54:43 +0000 (09:54 -0500)]
Use non-blocking socket() and pipe() wrappers

Change-Id: I050ceffe5a133d5add2dab46687209813d58f597

23 months agoutils: Don't set or clear flags that don't need setting or clearing
Sean Bright [Tue, 11 Dec 2018 15:06:15 +0000 (10:06 -0500)]
utils: Don't set or clear flags that don't need setting or clearing

Change-Id: I0e7fb507ac09b15e45e1ff8501ecfca67afa5217

23 months agoMerge "CI: Various updates to buildAsterisk.sh"
George Joseph [Tue, 11 Dec 2018 15:07:59 +0000 (09:07 -0600)]
Merge "CI: Various updates to buildAsterisk.sh"

23 months agoMerge "utils: Wrap socket() and pipe() to reduce syscalls"
Joshua C. Colp [Tue, 11 Dec 2018 15:01:38 +0000 (09:01 -0600)]
Merge "utils: Wrap socket() and pipe() to reduce syscalls"

23 months agobuild: Update config.guess and config.sub
Sean Bright [Tue, 11 Dec 2018 12:55:16 +0000 (07:55 -0500)]
build: Update config.guess and config.sub

Pulled from the authoritative respository at:

  https://git.savannah.gnu.org/cgit/config.git/tree/

Change-Id: I748708ce24d4d47ff1f395075d0b08d3da3355e0

23 months agoRevert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"
George Joseph [Tue, 11 Dec 2018 14:28:48 +0000 (09:28 -0500)]
Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"

This reverts commit 3f53041267234b21aedd522c1197ec57cca90845.

Pending resolution of ASTERISK_28200

Change-Id: Iad4f3614cac95b00fdbb2b799aab8ae6285ec988

23 months agores/res_ari: Add additional hangup reasons
Sebastian Damm [Thu, 6 Dec 2018 17:23:50 +0000 (18:23 +0100)]
res/res_ari: Add additional hangup reasons

The ARI DELETE /channels command takes a "reason" parameter
Previously, there were only five reasons implemented
This patch adds more reasons to choose from for more
complex setups

ASTERISK-28198 #close

Change-Id: I85996f1076c9946d65c778413f040a845a90fecc

23 months agoMerge "chan_sip: Fix leak using contact ACL"
Joshua C. Colp [Mon, 10 Dec 2018 13:05:21 +0000 (07:05 -0600)]
Merge "chan_sip: Fix leak using contact ACL"

23 months agoutils: Wrap socket() and pipe() to reduce syscalls
Sean Bright [Fri, 7 Dec 2018 12:57:48 +0000 (07:57 -0500)]
utils: Wrap socket() and pipe() to reduce syscalls

Some platforms provide an implementation of socket() and pipe2() that allow the
caller to specify that the resulting file descriptors should be non-blocking.

Using these allows us to potentially elide 3 calls into 1 by avoiding extraneous
calls to fcntl() to set the O_NONBLOCK flag afterwards.

In passing, change ast_alertpipe_init() to use pipe2() directly instead of the
wrapper if it is available.

Change-Id: I3ebe654fb549587537161506c6c950f4ab298bb0

23 months agostasis: Allow filtering by formatter
George Joseph [Thu, 29 Nov 2018 15:53:51 +0000 (08:53 -0700)]
stasis:  Allow filtering by formatter

A subscriber can now indicate that it only wants messages
that have formatters of a specific type.  For instance,
manager can indicate that it only wants messages that have a
"to_ami" formatter.  You can combine this with the existing
filter for message type to get only messages with specific
formatters or messages of specific types.

ASTERISK-28186

Change-Id: Ifdb7a222a73b6b56c6bb9e4ee93dc8a394a5494c

23 months agoRemoving registrar_expire from basic-pbx config
David M. Lee [Wed, 5 Dec 2018 21:28:03 +0000 (15:28 -0600)]
Removing registrar_expire from basic-pbx config

The module has been removed, so it shouldn't be in the default config any more.

Change-Id: Ie7e09f00f9c9a885574e29478250de4c2cefd9f1

23 months agochan_sip: Fix leak using contact ACL
Giuseppe Sucameli [Wed, 5 Dec 2018 00:00:40 +0000 (01:00 +0100)]
chan_sip: Fix leak using contact ACL

Free old peer's contactacl before overwrite it within build_peer.

ASTERISK-28194

Change-Id: Ie580db6494e50cee0e2a44b38e568e34116ff54c

23 months agoCI: Various updates to buildAsterisk.sh
George Joseph [Wed, 5 Dec 2018 15:37:45 +0000 (08:37 -0700)]
CI: Various updates to buildAsterisk.sh

* Added ---no-configure, --no-menuselect, --no-make and --no-alembic
  options that prevent those actions from being performed.  Useful
  for testing and re-running portions of the build after fixing
  earlier failures.

* Added "set -e" to abort the script on command failure.
  Not sure why this wasn't there in the first place.

* Fixed a few echos that were redirecting to stderr when they shouldn't
  have been.

* Catch more alembic failures by actually trying to generate the SQL.

Change-Id: I9f395fa4e9254be7299e7c1014f1a13db78faffb

23 months agoMerge "test_websocket_client.c: Disable websocket_client_create_and_connect test."
George Joseph [Wed, 5 Dec 2018 14:18:36 +0000 (08:18 -0600)]
Merge "test_websocket_client.c: Disable websocket_client_create_and_connect test."

23 months agopjsip_add_use_callerid_contact: fixed alembic script
Kevin Harwell [Mon, 3 Dec 2018 23:45:57 +0000 (17:45 -0600)]
pjsip_add_use_callerid_contact: fixed alembic script

Change-Id: I413f1583c797fb79651786cd8d0b003599f8ed10

23 months agocore: Add some documentation to the malloc_trim code
Sean Bright [Mon, 3 Dec 2018 22:41:56 +0000 (17:41 -0500)]
core: Add some documentation to the malloc_trim code

This adds documentation to handle_cli_malloc_trim() indicating how it
can be useful when debugging OOM conditions.

Change-Id: I1936185e78035bf123cd5e097b793a55eeebdc78

23 months agoMerge "core: Merge malloc_trim patch"
George Joseph [Mon, 3 Dec 2018 22:26:51 +0000 (16:26 -0600)]
Merge "core: Merge malloc_trim patch"

23 months agocore: Merge malloc_trim patch
Chris-Savinovich [Mon, 3 Dec 2018 20:01:01 +0000 (14:01 -0600)]
core: Merge malloc_trim patch

We've had multiple opportunities where Richard Mudgett's
malloc_trim patch has been useful. Let's get it
pushed up to gerrit and merged.

Since malloc_trim is only available in libc, an entry is
added to configure.ac to create a definition for
HAVE_MALLOC_TRIM.

Change-Id: Ia38308c550149d9d6eae4ca414a649957de9700c

23 months agores_pjsip: Patch for res_pjsip_* module load/reload crash
Sungtae Kim [Sun, 11 Nov 2018 16:29:10 +0000 (17:29 +0100)]
res_pjsip: Patch for res_pjsip_* module load/reload crash

The session_supplements for the pjsip makes crashes when the module
load/unload.

ASTERISK-28157

Change-Id: I5b82be3a75d702cf1933d8d1417f44aa10ad1029

23 months agoapp_queue: Revert broken queue channel reference patch
lvl [Mon, 22 Oct 2018 12:47:56 +0000 (14:47 +0200)]
app_queue: Revert broken queue channel reference patch

Revert commit 6409e7b11a2310196a9978b30a6b79e2760be592, and add
NULL checks for all app_queue event handling code.

Related issues: ASTERISK~25185, ASTERISK~27006, ASTERISK~25844

ASTERISK-28125

Change-Id: I37334ea184ebb56e54471496b82937d4927815a0

23 months agotest_websocket_client.c: Disable websocket_client_create_and_connect test.
Chris-Savinovich [Fri, 30 Nov 2018 20:00:14 +0000 (14:00 -0600)]
test_websocket_client.c: Disable websocket_client_create_and_connect test.

This test was occasionally failing, with:

  WARNING[5812]: http.c:1939 httpd_helper_thread: Failed to set
      TCP_NODELAY on HTTP connection: Bad file descriptor
  ERROR[5812]: iostream.c:91 ast_iostream_nonblock: Failed to get
      fcntl() flags for file descriptor: Bad file descriptor
  ERROR[5812]: iostream.c:569 ast_iostream_close: close() failed: Bad
      file descriptor

Disabled for now by making the test explicit only.

Change-Id: I778f6cbb6104c6b4e89737a2eaf1a9540888d351

2 years agopjproject_bundled: check whether UPDATE is supported on outgoing calls
Pirmin Walthert [Wed, 28 Nov 2018 07:14:12 +0000 (08:14 +0100)]
pjproject_bundled: check whether UPDATE is supported on outgoing calls

In ASTERISK-27095 an issue had been fixed because of which chan_pjsip was not
trying to send UPDATE messages when connected_line_method was set to invite.
However this only solved the issue for incoming INVITES. For outgoing INVITES
(important when transferring calls) the options variable needs to be updated
at a different place.

ASTERISK-28182 #close
Reported-by: nappsoft

Change-Id: I76cc06da4ca76ddd6dce814a8b97cc66b98aaf29

2 years agoMerge "Revert "app_voicemail: Remove need to subscribe to stasis""
George Joseph [Fri, 30 Nov 2018 13:30:35 +0000 (07:30 -0600)]
Merge "Revert "app_voicemail: Remove need to subscribe to stasis""

2 years agoMerge "bridges: Remove reliance on stasis caching"
George Joseph [Thu, 29 Nov 2018 21:05:33 +0000 (15:05 -0600)]
Merge "bridges:  Remove reliance on stasis caching"

2 years agoRevert "app_voicemail: Remove need to subscribe to stasis"
George Joseph [Thu, 29 Nov 2018 19:26:16 +0000 (12:26 -0700)]
Revert "app_voicemail: Remove need to subscribe to stasis"

This reverts commit 29115e23848cceee0e2763bc70e87cb311919cdd.

That commit closed a long standing hole which allowed subscriptions
to mailboxes that weren't configured in voicemail.conf.  This
caused an issue with FreePBX which depdended on that behavior.
The commit is being reverted until FreePBX can handle the new
behavior.

ASTERISK-28151
Reported by: Ronald Raikes

Change-Id: I57b7b85e75d7dd97c742b5c69d718a0f61260c15

2 years agoMerge "jansson: Upgrade to 2.12."
Kevin Harwell [Thu, 29 Nov 2018 18:57:32 +0000 (12:57 -0600)]
Merge "jansson: Upgrade to 2.12."

2 years agotest_cel: Plug a few ref leaks
George Joseph [Mon, 26 Nov 2018 22:18:00 +0000 (15:18 -0700)]
test_cel:  Plug a few ref leaks

These are only a few of the leaks.  The large number of macros
and return paths in this file would make a weeks worth of work
to plug them all.

Change-Id: Ie2369fa944023d44767871c5c30974cb077ffb56

2 years agobridges: Remove reliance on stasis caching
George Joseph [Wed, 19 Sep 2018 19:34:41 +0000 (13:34 -0600)]
bridges:  Remove reliance on stasis caching

* The bridging core no longer uses the stasis cache for bridge
  snapshots.  The latest bridge snapshot is now stored on the
  ast_bridge structure itself.

* The following APIs are no longer available since the stasis cache
  is no longer used:
    ast_bridge_topic_cached()
    ast_bridge_topic_all_cached()

* A topic pool is now used for individual bridge topics.

* The ast_bridge_cache() function was removed since there's no
  longer a separate container of snapshots.

* A new function "ast_bridges()" was created to retrieve the
  container of all bridges.  Users formerly calling
  ast_bridge_cache() can use the new function to iterate over
  bridges and retrieve the latest snapshot directly from the
  bridge.

* The ast_bridge_snapshot_get_latest() function was renamed to
  ast_bridge_get_snapshot_by_uniqueid().

* A new function "ast_bridge_get_snapshot()" was created to retrieve
  the bridge snapshot directly from the bridge structure.

* The ast_bridge_topic_all() function now returns a normal topic
  not a cached one so you can't use stasis cache functions on it
  either.

* The ast_bridge_snapshot_type() stasis message now has the
  ast_bridge_snapshot_update structure as it's data.  It contains
  the last snapshot and the new one.

* cdr, cel, manager and ari have been updated to use the new
  arrangement.

Change-Id: I7049b80efa88676ce5c4666f818fa18ad1985369

2 years agoMerge "stasis: Segment channel snapshot to reduce creation cost."
Jenkins2 [Mon, 26 Nov 2018 20:07:47 +0000 (14:07 -0600)]
Merge "stasis: Segment channel snapshot to reduce creation cost."

2 years agoMerge "astobj2: Create function to copy weak proxied objects from container."
Joshua Colp [Mon, 26 Nov 2018 19:48:00 +0000 (13:48 -0600)]
Merge "astobj2: Create function to copy weak proxied objects from container."

2 years agoMerge "RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit"
Joshua Colp [Mon, 26 Nov 2018 19:47:32 +0000 (13:47 -0600)]
Merge "RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit"

2 years agostasis: Segment channel snapshot to reduce creation cost.
Joshua Colp [Wed, 7 Nov 2018 17:18:34 +0000 (13:18 -0400)]
stasis: Segment channel snapshot to reduce creation cost.

When a channel snapshot was created it used to be done
from scratch, copying all data (many strings). This incurs
a cost when doing so.

This change segments the channel snapshot into different
components which can be reused if unchanged from the
previous snapshot creation, reducing the cost. In normal
cases this results in some pointers being copied with
reference count being bumped, some integers being set,
and a string or two copied. The other benefit is that it
is now possible to determine if a channel snapshot update
is redundant and thus stop it before a message is published
to stasis.

The specific segments in the channel snapshot were split up
based on whether they are changed together, how often they
are changed, and their general grouping. In practice only
1 (or 0) of the segments actually get changed in normal
operation.

Invalidation is done by setting a flag on the channel when
the segment source is changed, forcing creation of a new
segment when the channel snapshot is created.

ASTERISK-28119

Change-Id: I5d7ef3df963a88ac47bc187d73c5225c315f8423

2 years agostasis: Use an implementation specific channel snapshot cache.
Joshua Colp [Wed, 10 Oct 2018 14:28:18 +0000 (11:28 -0300)]
stasis: Use an implementation specific channel snapshot cache.

Channels no longer use the Stasis cache for channel snapshots. Instead
they are stored in a hash table in stasis_channels which reduces the
number of Stasis messages created and allows better storage.

As a result the following APIs are no longer available since the stasis
cache is no longer used:
ast_channel_topic_cached()
ast_channel_topic_all_cached()

The ast_channel_cache_all() and ast_channel_cache_by_name() functions
now return an ao2_container of ast_channel_snapshots rather than
a container of stasis_messages therefore you can't (and don't need
to) call stasis_cache functions on it.

The ast_channel_topic_all() function now returns a normal topic not
a cached one so you can't use stasis cache functions on it either.

The ast_channel_snapshot_type() stasis message now has the
ast_channel_snapshot_update structure as it's data. It contains the
last snapshot and the new one.

ast_channel_snapshot_get_latest() still returns the latest snapshot.

The latest snapshot is now stored on the channel itself to eliminate
cache hits when Stasis messages that have the snapshot as a payload
are created.

ASTERISK-28102

Change-Id: I9334febff60a82d7c39703e49059fa3a68825786

2 years agoMerge "func_strings: HASHKEY - negative array index can cause corruption"
Joshua Colp [Mon, 26 Nov 2018 13:44:11 +0000 (07:44 -0600)]
Merge "func_strings: HASHKEY - negative array index can cause corruption"

2 years agojansson: Upgrade to 2.12.
Corey Farrell [Mon, 26 Nov 2018 12:09:11 +0000 (07:09 -0500)]
jansson: Upgrade to 2.12.

This brings in jansson-2.12, removes all patches that were merged
upstream.  README is created in third-party/jansson/patches to explain
how to add patches but also because the patches folder must exist for
the build process to succeed.

Change-Id: If0f2d541c50997690660c21fb7b03d625a5cdadd

2 years agoRTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit
Alexei Gradinari [Fri, 23 Nov 2018 15:40:50 +0000 (10:40 -0500)]
RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit

The marker bit set on the voice packet indicates the start
of a new stream and a new time stamp.
Need to reset the DTMF last sequence number and the timestamp
of the last END packet.

If the new time stamp is lower then the timestamp of the last DTMF END packet
the asterisk drops all DTMF frames as out of order.

This bug was caught using Cisco ip-phone SPA50X and codec g722.
On SIP session update the SPA50X resets stream indicating it with market bit
and a new timestamp is twice smaller then the previous.

ASTERISK-28162 #close

Change-Id: If9c5742158fa836ad549713a9814d46a5d2b1620

2 years agoastobj2: Remove legacy ao2_container_alloc routine.
Corey Farrell [Mon, 19 Nov 2018 20:10:02 +0000 (15:10 -0500)]
astobj2: Remove legacy ao2_container_alloc routine.

Replace usage of ao2_container_alloc with ao2_container_alloc_hash or
ao2_container_alloc_list.  Remove ao2_container_alloc macro.

Change-Id: I0907d78bc66efc775672df37c8faad00f2f6c088

2 years agoastobj2: Create function to copy weak proxied objects from container.
Corey Farrell [Wed, 14 Nov 2018 11:02:20 +0000 (06:02 -0500)]
astobj2: Create function to copy weak proxied objects from container.

Create ao2_container_dup_weakproxy_objs to perform a similar function to
ao2_container_dup.  This function expects the source container to have
weakproxy objects, inserts the associated non-weak objects into the
destination container.  Orphaned weakproxy objects are ignored.

Create test for this new function and for ao2_weakproxy_find.

Change-Id: I898387f058057e08696fe9070f8cd94ef3a27482

2 years agoMerge "stasis: Remove stringfields and lock from change message."
Joshua Colp [Tue, 20 Nov 2018 11:06:01 +0000 (05:06 -0600)]
Merge "stasis: Remove stringfields and lock from change message."

2 years agoMerge "app_queue: Cleanup queue_ref / queue_unref routines."
Joshua Colp [Tue, 20 Nov 2018 11:05:32 +0000 (05:05 -0600)]
Merge "app_queue: Cleanup queue_ref / queue_unref routines."

2 years agofunc_strings: HASHKEY - negative array index can cause corruption
Kevin Harwell [Fri, 16 Nov 2018 20:45:23 +0000 (14:45 -0600)]
func_strings: HASHKEY - negative array index can cause corruption

This patch makes it so only matching non-empty key names, and keys created by
the HASH function are eligible for inclusion in the comma separated string. It
also fixes a bug where it was possible to write to a negative index if the
result buffer was empty.

ASTERISK-28159
patches:
  ASTERISK-28159.diff submitted by Michael Walton (license 6502)

Change-Id: I6e57fe7307dfd856271753aed5ba64c59b511487

2 years agoCI: Get job timeouts from environment
George Joseph [Mon, 19 Nov 2018 17:59:07 +0000 (10:59 -0700)]
CI: Get job timeouts from environment

The job timeouts were hard coded in the jenkinsfiles which
means changes had to go through gerrit.  Now they are taken
from the following environment variables (and their defaults) that
can be set in Jenkins configuration...

TIMEOUT_GATES =      "60 MINUTES"
TIMEOUT_DAILIES =    "3 HOURS"
TIMEOUT_REF_DEBUG =  "24 HOURS"
TIMEOUT_UNITTESTS =  "30 MINUTES"

Change-Id: I673a551c1780bf665a3bc160b245da574aa4bbab

2 years agoMerge "test_res_pjsip_scheduler: Fix possible write after free in scheduler_policy."
Joshua Colp [Mon, 19 Nov 2018 15:38:50 +0000 (09:38 -0600)]
Merge "test_res_pjsip_scheduler: Fix possible write after free in scheduler_policy."

2 years agoMerge "res/res_ari: Fix null endpoint handle"
Joshua Colp [Mon, 19 Nov 2018 15:37:22 +0000 (09:37 -0600)]
Merge "res/res_ari: Fix null endpoint handle"

2 years agoMerge "bridge_native_rtp.c: Fail native bridge if no framing match."
Joshua Colp [Mon, 19 Nov 2018 15:36:17 +0000 (09:36 -0600)]
Merge "bridge_native_rtp.c: Fail native bridge if no framing match."

2 years agoMerge "res_pjsip_caller_id: Use static pj_str_t for fromto header names."
Joshua Colp [Mon, 19 Nov 2018 14:40:05 +0000 (08:40 -0600)]
Merge "res_pjsip_caller_id: Use static pj_str_t for fromto header names."

2 years agoMerge "stasis: Add internal filtering of messages."
Joshua Colp [Mon, 19 Nov 2018 14:36:50 +0000 (08:36 -0600)]
Merge "stasis: Add internal filtering of messages."

2 years agoapp_queue: Cleanup queue_ref / queue_unref routines.
Corey Farrell [Mon, 19 Nov 2018 13:00:03 +0000 (08:00 -0500)]
app_queue: Cleanup queue_ref / queue_unref routines.

This replaces the inline functions with macros.  This removes the need
to directly use __ao2_ref, opts instead for standard ao2_bump and
ao2_cleanup macros.

Change-Id: If4e04e9bab2e3c883188437cb9f487b3e498a21b

2 years agobacktrace: Refactor ast_bt_get_symbols so it doesn't crash
George Joseph [Thu, 8 Nov 2018 15:53:44 +0000 (08:53 -0700)]
backtrace:  Refactor ast_bt_get_symbols so it doesn't crash

We've been seeing crashes in libbfd when we attempt to generate
a stack trace from multiple threads.  It turns out that libbfd
is NOT thread-safe.  It can cache the bfd structure and give it to
multiple threads without protecting itself.  To get around this,
we've added a global mutex around the bfd functions and also have
refactored the use of those functions to be more efficient and
to provide more information about inlined functions.

Also added a few more tests to test_pbx.c.  One just calls
ast_assert() and the other calls ast_log_backtrace().  Neither are
run by default.

WARNING:  This change necessitated changing the return value of
ast_bt_get_symbols() from an array of strings to a VECTOR of
strings.  However, the use of this function outside Asterisk is not
likely.

ASTERISK-28140

Change-Id: I79d02862ddaa2423a0809caa4b3b85c128131621

2 years agostasis: Remove stringfields and lock from change message.
Joshua C. Colp [Sun, 18 Nov 2018 23:53:14 +0000 (19:53 -0400)]
stasis: Remove stringfields and lock from change message.

When a subscribe or unsubscribe occurs a message is published
containing this information. This change makes it so that the
message no longer uses stringfields or a lock, as both are not
really needed for the message.

Change-Id: I3f4831931d79f94fd979baf48048738df5dc1632

2 years agopjsip: New function PJSIP_PARSE_URI to parse URI and return part of URI
Alexei Gradinari [Tue, 13 Nov 2018 15:28:28 +0000 (10:28 -0500)]
pjsip: New function PJSIP_PARSE_URI to parse URI and return part of URI

New dialplan function PJSIP_PARSE_URI added to parse an URI and return
a specified part of the URI.

This is useful when need to get part of the URI instead of cutting it
using a CUT function.

For example to get 'user' part of Remote URI
${PJSIP_PARSE_URI(${CHANNEL(pjsip,remote_uri)},user)}

ASTERISK-28144 #close

Change-Id: I5d828fb87f6803b6c1152bb7b44835f027bb9d5a

2 years agoMerge "pjproject-bundled: Use AST_DEVMODE for conditional compilation."
George Joseph [Sun, 18 Nov 2018 20:11:58 +0000 (14:11 -0600)]
Merge "pjproject-bundled: Use AST_DEVMODE for conditional compilation."

2 years agostasis: Add internal filtering of messages.
Joshua Colp [Sun, 23 Sep 2018 20:50:01 +0000 (17:50 -0300)]
stasis: Add internal filtering of messages.

This change adds the ability for subscriptions to indicate
which message types they are interested in accepting. By
doing so the filtering is done before being dispatched
to the subscriber, reducing the amount of work that has
to be done.

This is optional and if a subscriber does not add
message types they wish to accept and set the subscription
to selective filtering the previous behavior is preserved
and they receive all messages.

There is also the ability to explicitly force the reception
of all messages for cases such as AMI or ARI where a large
number of messages are expected that are then generically
converted into a different format.

ASTERISK-28103

Change-Id: I99bee23895baa0a117985d51683f7963b77aa190

2 years agoCI: Add tmpfs to all jenkinsfiles
George Joseph [Sun, 18 Nov 2018 16:38:40 +0000 (09:38 -0700)]
CI:  Add tmpfs to all jenkinsfiles

Change-Id: Ida29d70d48d5f39aabf0b25c66b51f79324a8cba

2 years agoMerge "res/res_pjsip_nat: Fix logic for REINVITES"
George Joseph [Sun, 18 Nov 2018 14:47:10 +0000 (08:47 -0600)]
Merge "res/res_pjsip_nat: Fix logic for REINVITES"

2 years agoMerge "taskprocessor: Prevent race creating new taskprocessor."
George Joseph [Sat, 17 Nov 2018 23:28:41 +0000 (17:28 -0600)]
Merge "taskprocessor: Prevent race creating new taskprocessor."

2 years agoCI: Mount a tmpfs on /tmp for testsuite docker containers
George Joseph [Sat, 17 Nov 2018 21:40:46 +0000 (14:40 -0700)]
CI:  Mount a tmpfs on /tmp for testsuite docker containers

Change-Id: I0566d81b0852f22066cd76d58eae5f1fda5602aa
(cherry picked from commit 73efe86436427e5f43c532e5d42505ab4ec104d9)