]> git.ipfire.org Git - thirdparty/asterisk.git/log
thirdparty/asterisk.git
6 years agores_pjsip: add option to disable ContactStatus event when contact is updated
Alexei Gradinari [Fri, 11 Jan 2019 16:34:08 +0000 (11:34 -0500)] 
res_pjsip: add option to disable ContactStatus event when contact is updated

This patch adds a new PJSIP global configuration option
'send_contact_status_on_update_registration' to be able to have the same
performance benefits as version 16.

By default old behavior, i.e. the ContactStatus event will be sent when a
device refreshes its registration.

Change-Id: I706adf7584e7077eb6bde6d9799ca408bc82ce46

6 years 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

6 years agoMerge "ast_coredumper: Refactor the pid determination process" into 13
Joshua C. Colp [Fri, 4 Jan 2019 14:25:51 +0000 (08:25 -0600)] 
Merge "ast_coredumper:  Refactor the pid determination process" into 13

6 years agoMerge "stasis: Fix ABI between DEVMODE and non-DEVMODE." into 13
George Joseph [Fri, 4 Jan 2019 13:55:58 +0000 (07:55 -0600)] 
Merge "stasis: Fix ABI between DEVMODE and non-DEVMODE." into 13

6 years 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

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

6 years agostasis: Fix ABI between DEVMODE and non-DEVMODE.
Corey Farrell [Wed, 26 Dec 2018 18:30:07 +0000 (13:30 -0500)] 
stasis: Fix ABI between DEVMODE and non-DEVMODE.

Create compatibility stubs for maximum ABI compatibility.

ASTERISK-28212 #close

Change-Id: I872c04842ab6b61e9dd6d37e4166bc619aa20626

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

This reverts commit 94a4eea7f6e486368b35585ea867479f248095c2.

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: I0aaab5218a282706dfc6fcbbaeead228d599b99b

6 years 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

6 years 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

6 years agoMerge "app_voicemail: Don't delete mailbox state unless mailbox is deleted" into 13
Joshua C. Colp [Wed, 19 Dec 2018 11:14:16 +0000 (05:14 -0600)] 
Merge "app_voicemail:  Don't delete mailbox state unless mailbox is deleted" into 13

6 years agoMerge "res_rtp_asterisk: Remove some unused structure fields." into 13
George Joseph [Tue, 18 Dec 2018 16:42:17 +0000 (10:42 -0600)] 
Merge "res_rtp_asterisk: Remove some unused structure fields." into 13

6 years 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

6 years agoMerge "res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set"...
Friendly Automation [Mon, 17 Dec 2018 14:26:29 +0000 (08:26 -0600)] 
Merge "res_format_attr_h264.c: Make sure profile-level-id fmtp attribute is set" into 13

6 years agores_rtp_asterisk: Remove some unused structure fields.
Sean Bright [Fri, 14 Dec 2018 16:50:40 +0000 (11:50 -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

6 years agoMerge "bridge_builtin_features.c: Set auto(mix)mon variables on both channels" into 13
Friendly Automation [Fri, 14 Dec 2018 14:32:56 +0000 (08:32 -0600)] 
Merge "bridge_builtin_features.c: Set auto(mix)mon variables on both channels" into 13

6 years 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

6 years agoMerge "confbridge: announce to the marked users when they join an empty conference...
Friendly Automation [Thu, 13 Dec 2018 13:55:12 +0000 (07:55 -0600)] 
Merge "confbridge: announce to the marked users when they join an empty conference" into 13

6 years 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

6 years agoMerge "utils: Don't set or clear flags that don't need setting or clearing" into 13
Friendly Automation [Wed, 12 Dec 2018 19:11:17 +0000 (13:11 -0600)] 
Merge "utils: Don't set or clear flags that don't need setting or clearing" into 13

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

6 years agoMerge "Use non-blocking socket() and pipe() wrappers" into 13
Friendly Automation [Wed, 12 Dec 2018 17:26:50 +0000 (11:26 -0600)] 
Merge "Use non-blocking socket() and pipe() wrappers" into 13

6 years 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

6 years agoMerge "stasis: Allow filtering by formatter" into 13
Friendly Automation [Wed, 12 Dec 2018 17:09:22 +0000 (11:09 -0600)] 
Merge "stasis:  Allow filtering by formatter" into 13

6 years agoMerge "build: Update config.guess and config.sub" into 13
Joshua C. Colp [Wed, 12 Dec 2018 17:03:14 +0000 (11:03 -0600)] 
Merge "build: Update config.guess and config.sub" into 13

6 years agoMerge "pjproject_bundled: check whether UPDATE is supported on outgoing calls" into 13
George Joseph [Wed, 12 Dec 2018 16:52:10 +0000 (10:52 -0600)] 
Merge "pjproject_bundled: check whether UPDATE is supported on outgoing calls" into 13

6 years agoMerge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit...
Friendly Automation [Tue, 11 Dec 2018 20:14:33 +0000 (14:14 -0600)] 
Merge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"" into 13

6 years 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

6 years agoMerge "CI: Various updates to buildAsterisk.sh" into 13
George Joseph [Tue, 11 Dec 2018 15:07:39 +0000 (09:07 -0600)] 
Merge "CI: Various updates to buildAsterisk.sh" into 13

6 years 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

6 years agoMerge "utils: Wrap socket() and pipe() to reduce syscalls" into 13
Joshua C. Colp [Tue, 11 Dec 2018 15:02:39 +0000 (09:02 -0600)] 
Merge "utils: Wrap socket() and pipe() to reduce syscalls" into 13

6 years 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

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

This reverts commit cf620ce0f6dc4a7ef713dc85b4c2610b614cd647.

Pending resolution of ASTERISK_28200

Change-Id: If18ab1166db0d634ce8a099bd7460251e9c682e1

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

6 years 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

6 years 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

6 years 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

6 years 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

6 years 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

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

6 years 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

6 years agoMerge "core: Merge malloc_trim patch" into 13
George Joseph [Mon, 3 Dec 2018 22:26:13 +0000 (16:26 -0600)] 
Merge "core: Merge malloc_trim patch" into 13

6 years agoMerge "app_queue: Revert broken queue channel reference patch" into 13
George Joseph [Mon, 3 Dec 2018 21:08:09 +0000 (15:08 -0600)] 
Merge "app_queue: Revert broken queue channel reference patch" into 13

6 years 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

6 years agoMerge "res_pjsip: Patch for res_pjsip_* module load/reload crash" into 13
Jenkins2 [Mon, 3 Dec 2018 15:09:15 +0000 (09:09 -0600)] 
Merge "res_pjsip: Patch for res_pjsip_* module load/reload crash" into 13

6 years 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

6 years 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

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

6 years agoRevert "app_voicemail: Remove need to subscribe to stasis"
George Joseph [Thu, 29 Nov 2018 16:37:01 +0000 (09:37 -0700)] 
Revert "app_voicemail: Remove need to subscribe to stasis"

This reverts commit 1843b0e2b52ba95df57f2f92a8c4669cbbb17bfa.

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

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

6 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

6 years agores_pjsip: Patch for res_pjsip_* module load/reload crash
Corey Farrell [Tue, 27 Nov 2018 16:20:59 +0000 (11:20 -0500)] 
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

6 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

6 years agoMerge "RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit...
Jenkins2 [Mon, 26 Nov 2018 19:45:29 +0000 (13:45 -0600)] 
Merge "RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit" into 13

6 years agoMerge "astobj2: Eliminate usage of legacy ao2_container_alloc routine." into 13
Jenkins2 [Mon, 26 Nov 2018 13:38:32 +0000 (07:38 -0600)] 
Merge "astobj2: Eliminate usage of legacy ao2_container_alloc routine." into 13

6 years agoMerge "func_strings: HASHKEY - negative array index can cause corruption" into 13
Jenkins2 [Mon, 26 Nov 2018 13:25:29 +0000 (07:25 -0600)] 
Merge "func_strings: HASHKEY - negative array index can cause corruption" into 13

6 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

6 years agoastobj2: Eliminate usage of legacy ao2_container_alloc routine.
Corey Farrell [Mon, 19 Nov 2018 16:20:21 +0000 (11:20 -0500)] 
astobj2: Eliminate usage of legacy ao2_container_alloc routine.

Replace usage of ao2_container_alloc with ao2_container_alloc_hash or
ao2_container_alloc_list.

ao2_container_alloc is now restricted to modules only and is being
removed from Asterisk 17.

Change-Id: I0907d78bc66efc775672df37c8faad00f2f6c088

6 years agoMerge "stasis: Remove stringfields and lock from change message." into 13
Jenkins2 [Tue, 20 Nov 2018 11:05:29 +0000 (05:05 -0600)] 
Merge "stasis: Remove stringfields and lock from change message." into 13

6 years agoMerge "CI: Get job timeouts from environment" into 13
Jenkins2 [Mon, 19 Nov 2018 21:13:55 +0000 (15:13 -0600)] 
Merge "CI: Get job timeouts from environment" into 13

6 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

6 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

6 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

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

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

6 years agoMerge "res_pjsip_caller_id: Use static pj_str_t for fromto header names." into 13
Joshua Colp [Mon, 19 Nov 2018 14:39:57 +0000 (08:39 -0600)] 
Merge "res_pjsip_caller_id: Use static pj_str_t for fromto header names." into 13

6 years agoMerge "stasis: Add internal filtering of messages." into 13
Joshua Colp [Mon, 19 Nov 2018 14:37:16 +0000 (08:37 -0600)] 
Merge "stasis: Add internal filtering of messages." into 13

6 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

6 years agopjsip: New function PJSIP_PARSE_URI to parse URI and return part of URI
Alexei Gradinari [Wed, 31 Oct 2018 21:28:26 +0000 (17:28 -0400)] 
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

6 years agoMerge "pjproject-bundled: Use AST_DEVMODE for conditional compilation." into 13
George Joseph [Sun, 18 Nov 2018 20:12:06 +0000 (14:12 -0600)] 
Merge "pjproject-bundled: Use AST_DEVMODE for conditional compilation." into 13

6 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

6 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

6 years agoMerge "res/res_pjsip_nat: Fix logic for REINVITES" into 13
George Joseph [Sun, 18 Nov 2018 14:46:09 +0000 (08:46 -0600)] 
Merge "res/res_pjsip_nat: Fix logic for REINVITES" into 13

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

6 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

6 years agoCI: Pass work directory to runTestsuite
George Joseph [Sat, 17 Nov 2018 19:07:32 +0000 (12:07 -0700)] 
CI:  Pass work directory to runTestsuite

The testsuite can now use a user-specified work directory for
all it's temp files.  This allows the docker containers to use
a tmpfs backed directory for the temp files instead of it's
own write-layer image.

* runTestsuite.sh now accepts a --work-dir command line argument
  that gets exported as AST_WORK_DIR before running the testsuite.

* gates.jenkinsfile now specifies --work-dir to be
  <testsuite_dir>/astroot.

Since the Asterisk CI docker hosts now mount /srv/jenkins/workspace
on a tmpfs, asterisk should be compiled and the testsuite run all in
memory.

Change-Id: If5ee905a15821296c355bb84cda38950ad8edc45

6 years agoMerge "CI: Allow runUnittests to use 'expect' to run the tests" into 13
George Joseph [Sat, 17 Nov 2018 17:30:12 +0000 (11:30 -0600)] 
Merge "CI: Allow runUnittests to use 'expect' to run the tests" into 13

6 years agoMerge "core: Fix handling of restart from remote console." into 13
George Joseph [Fri, 16 Nov 2018 15:22:15 +0000 (09:22 -0600)] 
Merge "core: Fix handling of restart from remote console." into 13

6 years agoCI: Allow runUnittests to use 'expect' to run the tests
George Joseph [Thu, 15 Nov 2018 17:41:44 +0000 (10:41 -0700)] 
CI: Allow runUnittests to use 'expect' to run the tests

There seems to be a race condition between starting the asterisk
daemon and attempting to use 'asterisk -r' that can cause the
control socket file to not be created.  Since all of the Jenkins
slaves have 'expect' installed, the runUnittests script can use
it to start asterisk in the forground and issue the commands
interactively.  This is much more reliable and it can also make
startup errors more visible since they'll be in the Jenkins console
output.

If 'expect' isn't installed, the original daemon/asterisk -r
process is used.

Also added a "core show settings" before running the tests
and added "notice,warning,error" to the console log.

Change-Id: Idd656085f854afede813ac241b9e312b31358160

6 years agotaskprocessor: Prevent race creating new taskprocessor.
Corey Farrell [Mon, 12 Nov 2018 18:23:34 +0000 (13:23 -0500)] 
taskprocessor: Prevent race creating new taskprocessor.

Task processors are retrieved using a 'get or create' pattern.  The
singleton container was unlocked between the get and create steps so
it's possible that two threads could create task processors with the
same name at the same time.

Change-Id: Id64fae94a6a1e940ddf38fde622dcd4391635382

6 years agopjproject-bundled: Use AST_DEVMODE for conditional compilation.
Corey Farrell [Fri, 16 Nov 2018 12:20:11 +0000 (07:20 -0500)] 
pjproject-bundled: Use AST_DEVMODE for conditional compilation.

We previously allowed resample and g711 codecs to be built when
TEST_FRAMEWORK was enabled.  This could cause errors if the testsuite
was run without this option enabled.  Switch the build system to allow
those codecs to be built when --enable-dev-mode is used.  This removes a
chance for strange testsuite errors from use of an inadequate pjsua
binary.

Change-Id: Iee8a3613cdb711fa7e7d217c5a775a575907ae22

6 years agores_pjsip_caller_id: Use static pj_str_t for fromto header names.
Corey Farrell [Thu, 15 Nov 2018 20:45:08 +0000 (15:45 -0500)] 
res_pjsip_caller_id: Use static pj_str_t for fromto header names.

PJSIP assumes that these header names are not allocated, does not clone
the name strings when reusing headers.

Block unload of res_pjsip_caller_id until shutdown to ensure static
memory stays valid.  It was previously unsafe to unload while any
sessions are active.

Change-Id: I190854dea943d6e441cf03733f8a0da661aea27f

6 years agoMerge "pbx_config: Only the first [globals] section is seen." into 13
George Joseph [Thu, 15 Nov 2018 13:48:30 +0000 (07:48 -0600)] 
Merge "pbx_config: Only the first [globals] section is seen." into 13

6 years agores/res_pjsip_nat: Fix logic for REINVITES
Torrey Searle [Wed, 24 Oct 2018 12:38:37 +0000 (14:38 +0200)] 
res/res_pjsip_nat: Fix logic for REINVITES

The presence of Record-Route in re-invites is optional, thus it is
important to make sure the dialog doesn't have a routset before
rewriting the contact header.

ASTERISK-28129 #close

Change-Id: Ic8ceb54ccfc93f7e315e476c514a2c777f2da7dc

6 years agocore: Fix handling of restart from remote console.
Corey Farrell [Thu, 15 Nov 2018 11:25:46 +0000 (06:25 -0500)] 
core: Fix handling of restart from remote console.

We cannot use need_el_end and SIGURG when restarting.  Instead we need
to run el_end within the SIGHUP restartnow handler.

ASTERISK-28158

Change-Id: Ia852276363c81bdcf1aa29eb4558c5c2fa1218a0

6 years agoMerge "core: Ensure that el_end is always run when needed." into 13
Joshua Colp [Wed, 14 Nov 2018 13:06:52 +0000 (07:06 -0600)] 
Merge "core: Ensure that el_end is always run when needed." into 13

6 years agoMerge "taskprocessor: Do not use separate allocation for stats or name." into 13
Joshua Colp [Wed, 14 Nov 2018 13:05:54 +0000 (07:05 -0600)] 
Merge "taskprocessor: Do not use separate allocation for stats or name." into 13

6 years agoMerge "jansson-bundled: Patch for off-nominal crash." into 13
George Joseph [Tue, 13 Nov 2018 20:39:46 +0000 (14:39 -0600)] 
Merge "jansson-bundled: Patch for off-nominal crash." into 13

6 years agotest_res_pjsip_scheduler: Fix possible write after free in scheduler_policy.
Corey Farrell [Tue, 13 Nov 2018 16:51:00 +0000 (11:51 -0500)] 
test_res_pjsip_scheduler: Fix possible write after free in scheduler_policy.

It's possible for a 4th task to be spawned before we cancel.  This
results in a write to the already freed test_data1.  Wait long enough to
verify success of the cancelation before freeing test_data1.

Change-Id: I057e2fcbe97f8a175e50890be89c28c20490a20f

6 years agoRTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit
Alexei Gradinari [Mon, 12 Nov 2018 23:12:56 +0000 (18:12 -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

6 years agotaskprocessor: Do not use separate allocation for stats or name.
Corey Farrell [Mon, 12 Nov 2018 00:32:11 +0000 (19:32 -0500)] 
taskprocessor: Do not use separate allocation for stats or name.

Merge storage for the stats object and name string into the main
allocation for struct ast_taskprocessor.

Change-Id: I74fe9a7f357f0e6d63152f163cf5eef6428218e1

6 years agoMerge "res_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue...
Joshua Colp [Mon, 12 Nov 2018 11:38:27 +0000 (05:38 -0600)] 
Merge "res_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue" into 13

6 years agocore: Ensure that el_end is always run when needed.
Corey Farrell [Sun, 11 Nov 2018 13:34:53 +0000 (08:34 -0500)] 
core: Ensure that el_end is always run when needed.

* Ignore console=yes configuration option in remote console processes.
* Use new flag to tell consolethread to run el_end and exit when needed.

ASTERISK-28158

Change-Id: I9e23b31d4211417ddc88c6bbfd83ea4c9f3e5438

6 years agobridge_native_rtp.c: Fail native bridge if no framing match.
Robert Cripps [Wed, 17 Oct 2018 13:48:13 +0000 (15:48 +0200)] 
bridge_native_rtp.c: Fail native bridge if no framing match.

ASTERISK-28110 #close

Change-Id: Ic64b8fc6a140a93fbdb2f97550a40d0ff334e607

6 years agojansson-bundled: Patch for off-nominal crash.
Corey Farrell [Thu, 8 Nov 2018 21:37:34 +0000 (16:37 -0500)] 
jansson-bundled: Patch for off-nominal crash.

pack_string crashed on non-NULL strings returned when s->has_error was
true if the string was the result of 's' format without '#', '%' or '+'.

Change-Id: Ic125df691d81ba2cbc413e37bdae657b304d20d0

6 years agopbx_config: Only the first [globals] section is seen.
Corey Farrell [Fri, 2 Nov 2018 11:38:19 +0000 (07:38 -0400)] 
pbx_config: Only the first [globals] section is seen.

If multiple [globals] sections are used (for example via separate
included files), only the first one is processed.  This can result in
lost global variables when using a modular extensions.conf.

ASTERISK-28146 #close

Change-Id: Iaac810c0a7c4d9b1bf8989fcc041cdb910ef08a0

6 years agores_pjsip: Send a 503 response when overload state if reliable transport.
Chris-Savinovich [Tue, 6 Nov 2018 22:44:34 +0000 (16:44 -0600)] 
res_pjsip: Send a 503 response when overload state if reliable transport.

When Asterisk's taskprocessors get overloaded we need to reduce the work
load. res_pjsip currently ignores new SIP requests and relies on SIP
retransmissions in the hope that the overload condition will clear soon
enough to handle the retransmitted SIP request.
This change adds the following code after ast_taskprocessor_alert_get()
has returned TRUE:
1- identifies transport type. If non-udp then send a 503 response
2- if transport type is udp/udp6 then ignore, as before.

Change-Id: I1c230b40d43a254ea0f226b7acf9ee480a5d3836

6 years agoMerge "stasis: Clarify lifetime of topics." into 13
Joshua Colp [Wed, 7 Nov 2018 12:06:02 +0000 (06:06 -0600)] 
Merge "stasis: Clarify lifetime of topics." into 13

6 years agores_pjsip: formatting error in documentation
Kevin Harwell [Tue, 6 Nov 2018 22:35:30 +0000 (16:35 -0600)] 
res_pjsip: formatting error in documentation

The use of a '|' in the "global/debug" synopsis documentation caused the
generated html table on the wiki to add an extra column that included the
text after the pipe.

This patch replaces the pipe with a comma.

ASTERISK-28150

Change-Id: I3d79a6ca6d733d9cb290e779438114884b98a719

6 years agores_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue
Alexei Gradinari [Mon, 5 Nov 2018 18:44:28 +0000 (13:44 -0500)] 
res_pjsip.c: Make taskprocessor scheduling algorithm pick the shortest queue

The current round-robin method does not take the current taskprocessor
load into consideration when distributing requests.  Using the least-size
method the request goes to the taskprocessor that is servicing the least
number of active tasks at the current time.

Longer running tasks with the round-robin method can delay processing
tasks.

* Change the algorithm from round-robin to least-size for picking the
PJSIP taskprocessor from the default serializer pool.

Change-Id: I7b8d8cc2c2490494f579374b6af0a4868e3a37cd