Commit Graph

30809 Commits

Author SHA1 Message Date
Joshua C. Colp
e5605232df 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
2018-12-12 13:14:04 -04:00
Friendly Automation
a03202e551 Merge "stasis: Allow filtering by formatter" into 13 2018-12-12 11:09:22 -06:00
Joshua C. Colp
e557a72566 Merge "build: Update config.guess and config.sub" into 13 2018-12-12 11:03:14 -06:00
George Joseph
6109126e2d Merge "pjproject_bundled: check whether UPDATE is supported on outgoing calls" into 13 2018-12-12 10:52:10 -06:00
Friendly Automation
53bda83f5e Merge "Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"" into 13 2018-12-11 14:14:33 -06:00
Sean Bright
b84fd37ef0 Use non-blocking socket() and pipe() wrappers
Change-Id: I050ceffe5a133d5add2dab46687209813d58f597
2018-12-11 12:03:54 -05:00
George Joseph
232a56d0af Merge "CI: Various updates to buildAsterisk.sh" into 13 2018-12-11 09:07:39 -06:00
Sean Bright
3f3035680b utils: Don't set or clear flags that don't need setting or clearing
Change-Id: I0e7fb507ac09b15e45e1ff8501ecfca67afa5217
2018-12-11 10:07:27 -05:00
Joshua C. Colp
a2e4621d77 Merge "utils: Wrap socket() and pipe() to reduce syscalls" into 13 2018-12-11 09:02:39 -06:00
Sean Bright
93f00ebe59 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
2018-12-11 09:34:11 -05:00
George Joseph
1ef993911f Revert "RTP: reset DTMF last seqno/timestamp on voice packet with marker bit"
This reverts commit cf620ce0f6.

Pending resolution of ASTERISK_28200

Change-Id: If18ab1166db0d634ce8a099bd7460251e9c682e1
2018-12-11 09:29:25 -05:00
Joshua C. Colp
e8a8729ed4 Merge "chan_sip: Fix leak using contact ACL" into 13 2018-12-10 07:05:31 -06:00
Alexei Gradinari
6392e452f2 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
2018-12-07 15:22:29 -05:00
Giuseppe Sucameli
f4afd097af chan_sip: Fix leak using contact ACL
Free old peer's contactacl before overwrite it within build_peer.

ASTERISK-28194

Change-Id: Ie580db6494e50cee0e2a44b38e568e34116ff54c
2018-12-07 11:58:03 -05:00
George Joseph
21a5ad0fd9 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
2018-12-07 06:57:15 -07:00
Sean Bright
8c312c54ed 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
2018-12-07 08:57:02 -05:00
George Joseph
30934a0145 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
2018-12-05 08:37:45 -07:00
George Joseph
d9252612a7 Merge "test_websocket_client.c: Disable websocket_client_create_and_connect test." into 13 2018-12-05 08:18:14 -06:00
Sean Bright
44c8868fb1 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
2018-12-03 17:47:06 -05:00
George Joseph
d5765e9318 Merge "core: Merge malloc_trim patch" into 13 2018-12-03 16:26:13 -06:00
George Joseph
f908722c6a Merge "app_queue: Revert broken queue channel reference patch" into 13 2018-12-03 15:08:09 -06:00
Chris-Savinovich
40ab571e0d 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
2018-12-03 14:45:00 -06:00
Jenkins2
c30f04fa07 Merge "res_pjsip: Patch for res_pjsip_* module load/reload crash" into 13 2018-12-03 09:09:15 -06:00
lvl
91630834f7 app_queue: Revert broken queue channel reference patch
Revert commit 6409e7b11a, and add
NULL checks for all app_queue event handling code.

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

ASTERISK-28125

Change-Id: I37334ea184ebb56e54471496b82937d4927815a0
2018-12-03 05:05:16 -05:00
Chris-Savinovich
2e15657485 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
2018-12-02 08:55:10 -05:00
George Joseph
822d321a10 Merge "Revert "app_voicemail: Remove need to subscribe to stasis"" into 13 2018-11-30 07:29:48 -06:00
George Joseph
363d19326b Revert "app_voicemail: Remove need to subscribe to stasis"
This reverts commit 1843b0e2b5.

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
2018-11-29 12:09:42 -07:00
Kevin Harwell
d3b0284641 Merge "jansson: Upgrade to 2.12." into 13 2018-11-29 12:57:40 -06:00
Pirmin Walthert
385d7523c7 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
2018-11-29 14:44:11 +01:00
Corey Farrell
ec02d7fd4c 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
2018-11-27 11:20:59 -05:00
George Joseph
922fbafda0 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
2018-11-26 17:19:51 -05:00
Jenkins2
9f0459d2a0 Merge "RTP: need to reset DTMF last seqno/timestamp on voice packet with marker bit" into 13 2018-11-26 13:45:29 -06:00
Jenkins2
379db83b7a Merge "astobj2: Eliminate usage of legacy ao2_container_alloc routine." into 13 2018-11-26 07:38:32 -06:00
Jenkins2
57969c634e Merge "func_strings: HASHKEY - negative array index can cause corruption" into 13 2018-11-26 07:25:29 -06:00
Corey Farrell
7c346aa4f4 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
2018-11-26 07:09:11 -05:00
Corey Farrell
0a9904e1c6 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
2018-11-21 09:56:07 -05:00
Jenkins2
78dbbcef65 Merge "stasis: Remove stringfields and lock from change message." into 13 2018-11-20 05:05:29 -06:00
Jenkins2
35a5d63195 Merge "CI: Get job timeouts from environment" into 13 2018-11-19 15:13:55 -06:00
Kevin Harwell
aa728adab0 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
2018-11-19 13:34:46 -06:00
George Joseph
d2397e643d 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
2018-11-19 10:59:07 -07:00
Joshua C. Colp
a5a8cba8c7 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
2018-11-19 12:00:36 -05:00
Joshua Colp
e0b5d74e93 Merge "test_res_pjsip_scheduler: Fix possible write after free in scheduler_policy." into 13 2018-11-19 09:38:31 -06:00
Joshua Colp
6dba9ca6b4 Merge "bridge_native_rtp.c: Fail native bridge if no framing match." into 13 2018-11-19 09:35:36 -06:00
Joshua Colp
b9692fb909 Merge "res_pjsip_caller_id: Use static pj_str_t for fromto header names." into 13 2018-11-19 08:39:57 -06:00
Joshua Colp
b7b581f209 Merge "stasis: Add internal filtering of messages." into 13 2018-11-19 08:37:16 -06:00
George Joseph
0deaf81bff 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
2018-11-19 05:47:35 -07:00
Alexei Gradinari
b6d0fbda9d 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
2018-11-18 13:39:26 -07:00
George Joseph
6dcbbdec9b Merge "pjproject-bundled: Use AST_DEVMODE for conditional compilation." into 13 2018-11-18 14:12:06 -06:00
Joshua Colp
d748ed4147 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
2018-11-18 14:07:56 -06:00
George Joseph
7ec470c1ca CI: Add tmpfs to all jenkinsfiles
Change-Id: Ida29d70d48d5f39aabf0b25c66b51f79324a8cba
2018-11-18 09:38:40 -07:00