Commit Graph

28910 Commits

Author SHA1 Message Date
George Joseph
7b06dae2d8 Merge "res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands." into 13 2017-01-24 15:47:13 -06:00
Joshua Colp
a2f0adccbd res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0.
When configuring a match using a netmask the error variable was
not defaulting to 0. For some people this would cause the code
to think an error occurred when adding the match when in reality
it added perfectly fine.

ASTERISK-26693

Change-Id: I850c250813742bddde65c84e739093c9e01dfe56
2017-01-24 21:39:39 +00:00
Richard Mudgett
607b3ac736 astobj2.c: Add excessive ref count trap.
Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a
2017-01-24 14:10:16 -06:00
Richard Mudgett
ab8cb5a7ce main/app.c: Memory corruption from early format destruction.
* make_silence() created a malloced silence slin frame without adding a
slin format ref.  When the frame is destroyed it will unref the slin
format that never had a ref added.  Memory corruption is expected to
follow.

* Simplified and fixed counting the number of samples in a frame list for
make_silence().

* Eliminated an unnecessary RAII_VAR associated with the make_silence()
frame.

Change-Id: I47de3f9b92635b7f8b4d72309444d6c0aee6f747
2017-01-24 14:04:08 -06:00
Richard Mudgett
dcd8e4b1a0 frame.c: Fix off-nominal format ref leaks.
* ast_frisolate() could leak frame format refs on allocation
failures.

* Similified code in ast_frisolate() and code used by
ast_frisolate().

Change-Id: I79566d4d36b3d7801bf0c8294fcd3e9a86a2ed6d
2017-01-24 14:01:47 -06:00
Richard Mudgett
00a227e93d stasis_bridge.c: Fix off-nominal stasis control ref leak.
Change-Id: Ib17218343a6596832060180e19386da9df150ac8
2017-01-24 13:57:41 -06:00
Richard Mudgett
38a2021c68 res_musiconhold.c: Fix format ref leak when parsing MOH config class.
Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5
2017-01-24 13:40:11 -06:00
Richard Mudgett
ab7a9fc5b2 chan_oss.c: Fix format ref leak in oss_read().
Change-Id: I0a5d56c7dcf327d60f86a4c25a23571733709fd0
2017-01-24 13:38:32 -06:00
Richard Mudgett
1484a991e1 Add notes about embedded ast_frame structs holding a format ref.
mod_format.h: Note ast_filestream.fr holds a format ref.

translate.h: Note ast_trans_pvt.f holds a format ref.

Change-Id: I86bda354d725207b41e08920355d7c31b2d7f749
2017-01-24 13:36:51 -06:00
George Joseph
17f4989d49 ari: Implement 'debug all' and request/response logging
The 'ari set debug' command has been enhanced to accept 'all' as an
application name.  This allows dumping of all apps even if an app
hasn't registered yet.  To accomplish this, a new global_debug global
variable was added to res/stasis/app.c and new APIs were added to
set and query the value.

'ari set debug' now displays requests and responses as well as events.
This required refactoring the existing debug code.

* The implementation for 'ari set debug' was moved from stasis/cli.{c,h}
  to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted.
* In order to print the body of incoming requests even if a request
  failed, the consumption of the body was moved from the ari stubs
  to ast_ari_callback in res_ari.c and the moustache templates were
  then regenerated.  The body is now passed to ast_ari_invoke and then
  on to the handlers.  This results in code savings since that template
  was inserted multiple times into all the stubs.

An additional change was made to the ao2_str_container implementation
to add partial key searching and a sort function.  The existing cli
code assumed it was already there when it wasn't so the tab completion
was never working.

Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf
2017-01-24 10:48:41 -07:00
Richard Mudgett
30cb4eb57f PJPROJECT logging: Fix detection of max supported log level.
The mechanism used for detecting the maximum log level compiled into the
linked pjproject did not work.  The API call simply stores the requested
level into an integer and does no range checking.  Asterisk was assuming
that there was range checking and limited the new value to the allowable
range.  To get the actual maximum log level compiled into the linked
pjproject we need to get and save off the initial set log level from
pjproject.  This is the maximum log level supported.

* Get and save off the initial log level setting before altering it to the
desired level on startup.  This has to be done by a macro rather than
calling a core function to avoid incorrectly linking pjproject.

* Split the initial log level warning messages to warn if the linked
pjproject cannot support the requested startup level and if it is too low
to get the pjproject buildopts for "pjproject show buildopts".

* Adjust the CLI "pjproject set log level" to check the saved max log
level and to generate normal output messages instead of a warning message.

ASTERISK-26743 #close

Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
2017-01-24 11:23:05 -06:00
Tzafrir Cohen
cd2677f966 tests: use datadir for sound files
Some (voicemail-related) tests API symlinks beep.gsm and other files
from ast_config_AST_VAR_DIR. It should use ast_config_AST_DATA_DIR.

ASTERISK-26740 #close

Change-Id: Id49c56fb9e16df64b1a2b829693ca7601252df89
2017-01-24 08:34:57 -06:00
Tzafrir Cohen
b62f84bfb1 test_voicemail_api: order of params to VERIFY macros
Fix order of parameters in calls to VM_API_INT_VERIFY and
VM_API_STRING_VERIFY

ASTERISK-26739 #close

Change-Id: I30dc6b36893aadad6012be3f16f93aa5720870d6
Note: status: builds. Not tested any further.
2017-01-24 08:34:18 -06:00
George Joseph
48178e5918 Merge "res_pjsip_endpoint_identifier_ip: Read settings before resolving." into 13 2017-01-24 07:08:44 -06:00
Richard Mudgett
e3dcb9ddd9 res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands.
ASTERISK-23828 #close

Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567
2017-01-23 18:06:08 -06:00
Mark Michelson
75497c33ea Free endpoint ACLs when destroying PJSIP endpoints.
If endpoint ACLs were specified, they were not being freed
when endpoints were destroyed. On systems with realtime endpoints, this
could add up quickly since each DB lookup would allocate the ACL without
freeing it.

ASTERISK-26731 #close
Reported by Ustinov Artem

Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad
2017-01-23 16:20:42 -06:00
George Joseph
5a4cd9fc6f Merge "LISTFILTER: Remove outdated ERROR message." into 13 2017-01-23 15:05:06 -06:00
George Joseph
9dc30b3a6d Merge "res_pjsip_pubsub.c: Fix incorrect message string wrapping." into 13 2017-01-23 15:01:12 -06:00
Joshua Colp
4fc146e287 Merge "res_pjsip_pubsub.c: Fix AMI event list counts." into 13 2017-01-23 11:10:10 -06:00
George Joseph
177e81ee47 pjproject_bundled: Fix setting max log level
An earlier attempt to prevent pjsua from spitting out an extra 6795
lines of debug output every time the testsuite called it was also
turning off the ability for asterisk to output debug info when it
needed to.  This patch reverts the earlier fix and instead adds
a pjproject patch that sets the startup log level to 1 for pjsua
pjsystest and the pjsua python binding.  This is an asterisk-only
patch that does not affect pjproject functionality and will not be
submitted upstream.

Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8
2017-01-23 10:31:54 -06:00
Joshua Colp
6d23b2e360 res_pjsip_endpoint_identifier_ip: Read settings before resolving.
An option has been added, srv_lookups, which controls whether
SRV lookups are performed on the provided match hosts or not.
It was possible for this option to be applied after resolution
had already happened.

This change makes it so hosts are stored away, settings are read
and applied, and then resolution is done. This ensures that no
matter the ordering the srv_lookups option is in effect.

ASTERISK-26735

Change-Id: I750378cb277be0140f8c5539450270afbfc43388
2017-01-23 16:08:37 +00:00
Joshua Colp
fb21931a52 Merge "res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage." into 13 2017-01-23 09:37:46 -06:00
Richard Mudgett
a969bf3577 LISTFILTER: Remove outdated ERROR message.
Feeding LISTFILTER an empty variable results in an invalid ERROR message.
Earlier changes made the message useless because we can no longer tell if
the variable is empty or does not exist.  It is valid to try to remove a
value from an empty list just as it is valid to try to remove a value that
is not in a non-empty list.

* Removed the outdated ERROR message.

* Added more test cases to the LISTFILTER unit test.

Change-Id: Ided9040e6359c44a335ef54e02ef5950a1863134
2017-01-22 17:46:02 -06:00
zuul
8c3ec5038f Merge "res_pjsip: alloca can never fail." into 13 2017-01-20 16:14:39 -06:00
zuul
7f68f69732 Merge "debug_utilities: Create ast_loggrabber" into 13 2017-01-20 14:24:33 -06:00
zuul
f1186fdfeb Merge "abstract/fixed/adpative jitter buffer: disallow frame re-inserts" into 13 2017-01-20 13:44:42 -06:00
Richard Mudgett
3890337e7a res_pjsip_pubsub.c: Fix AMI event list counts.
Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound,
and PJSIPShowResourceLists actions event counts.  The reported counts may
not necessarily be accurate depending on what happens.

The subscriptions count would be wrong if Asterisk ever has outbound
subscriptions.

The resource list count could be wrong if a list were added or removed
during the AMI action being processed.

Change-Id: I4344301827523fa174960a42c413fd19abe4aed5
2017-01-20 12:38:40 -06:00
Richard Mudgett
fe4801c4f9 res_pjsip_pubsub.c: Fix incorrect message string wrapping.
Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120
2017-01-20 12:36:11 -06:00
Richard Mudgett
46484b8730 res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage.
Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be
2017-01-20 12:33:01 -06:00
Richard Mudgett
8160474d7d res_pjsip: alloca can never fail.
Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1
2017-01-20 12:26:58 -06:00
George Joseph
c628a7acac debug_utilities: Create ast_loggrabber
ast_loggrabber gathers log files from customizable search patterns,
optionally converts POSIX timestamps to a readable format and
tarballs the results.

Also a few tweaks were made to ast_coredumper.

Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495
(cherry picked from commit 5fa1c56d7e)
2017-01-20 11:21:47 -06:00
Richard Mudgett
e335b706ee res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages.
Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49
2017-01-20 07:17:12 -06:00
Kevin Harwell
883e7fde31 abstract/fixed/adpative jitter buffer: disallow frame re-inserts
It was possible for a frame to be re-inserted into a jitter buffer after it
had been removed from it. A case when this happened was if a frame was read
out of the jitterbuffer, passed to the translation core, and then multiple
frames were returned from said translation core. Upon multiple frames being
returned the first is passed on, but sebsequently "chained" frames are put
back into the read queue. Thus it was possible for a frame to go back into
the jitter buffer where this would cause problems.

This patch adds a flag to frames that are inserted into the channel's read
queue after translation. The abstract jitter buffer code then checks for this
flag and ignores any frames marked as such.

Change-Id: I276c44edc9dcff61e606242f71274265c7779587
2017-01-17 17:08:36 -06:00
Richard Mudgett
473330983b taskprocessor.c: Change when high water warning logged.
The task processor queue reached X scheduled tasks message was originally
intended to get logged only once per task processor to prevent spamming
the log.  This is no longer necessary since high and low water thresholds
can better control when the message is logged.

It is beneficial to generate the warning each time a task processor
reaches the high water level because PJSIP stops processing new requests
while any high water alert is active.  Without this change you would have
to enable at least debug level 3 logging to know about a repeated alert
trigger.

* Made generate the warning message whenever a task is pushed into the
task processor that triggers the high water alert.

* Appended 'again' to the warning for a repeated high water alert trigger.

Change-Id: Iabf75a004f7edaf1e5e8c323099418e667cac999
2017-01-13 21:30:53 -06:00
zuul
b9c73de158 Merge "res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt)" into 13 2017-01-12 19:54:09 -06:00
Aaron An
0047b1bc49 res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt)
Function CHANNEL(rtcp,all_rtt) CHANNEL(rtcp,all_loss) CHANNEL(rtcp,all_jitter)
always return 0.0 due to wrong define of macro "AST_RTP_SATA_SET" and
"AST_RTP_STAT_STRCPY".
It should compare "combined" with "stat" not "current_stat".

ASTERISK-26710 #close
Reported-by: Aaron An
Tested-by: AaronAn

Change-Id: Id4140fafbf92e2db689dac5b17d9caa009028a15
2017-01-12 16:55:45 -06:00
George Joseph
47474cfd54 debug_utilities: Create the ast_coredumper utility
This utility allows easy manipulation of asterisk coredumps.

* Configurable search paths and patterns for existing coredumps
* Can generate a consistent coredump from the running instance
* Can dump the lock_infos table from a coredump
* Dumps backtraces to separate files...
  - thread apply 1 bt full -> <coredump>.thread1.txt
  - thread apply all bt -> <coredump>.brief.txt
  - thread apply all bt full -> <coredump>.full.txt
  - lock_infos table -> <coredump>.locks.txt
* Can tarball corefiles and optionally delete them after processing
* Can tarball results files and optionally delete them after processing
* Converts ':' in coredump and results file names '-' to facilitate
  uploading.  Jira for instance, won't accept file names with colons
  in them.

Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1].

[1] For *BSDs, the "devel/gdb" package might have to be installed to
get a recent gdb.  The utility will check all instances of gdb
it finds in $PATH and if one isn't found that can run python, it
prints a friendly error.

Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd
2017-01-11 12:07:33 -06:00
Joshua Colp
ac4d6828f5 Merge "res_pjsip_endpoint_identifier_ip: Add support for SRV lookups." into 13 2017-01-09 12:47:52 -06:00
Joshua Colp
d30bef1de9 Merge "chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND." into 13 2017-01-09 08:46:32 -06:00
Joshua Colp
bc5102adec Merge "res_pjsip: Fix known compact header issues" into 13 2017-01-09 07:23:10 -06:00
Joshua Colp
fdfa805552 Merge changes from topic 'ASTERISK-26672' into 13
* changes:
  res_rtp_asterisk.c: Fix uninitialized memory crash.
  chan_rtp.c: Fix uninitialized memory crash.
2017-01-09 07:22:18 -06:00
George Joseph
f8cd73ec3c pjproject_bundled: Fix compilation with MALLOC_DEBUG
When MALLOC_DEBUG was specified, make was failing.  Immediately
remaking would work.  The issues was in the ordering of the make
dependencies.

Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd
2017-01-08 09:37:04 -07:00
zuul
ecf49ae69a Merge "res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip()." into 13 2017-01-06 10:23:52 -06:00
Joshua Colp
37aaaa2da2 res_pjsip_endpoint_identifier_ip: Add support for SRV lookups.
This change implements SRV support for the IP based endpoint
identifier module. All possible addresses through SRV are looked
up and added as matches. If no SRV records are available a
fallback to normal host resolution is done. If an IP address
is provided then no SRV lookup occurs.

This is configured using the "srv_lookups" option on the
identify section and defaults to "yes".

ASTERISK-26693

Change-Id: I6b641e275bf96629320efa8b479737062aed82ac
2017-01-06 14:56:41 +00:00
zuul
bd37196774 Merge "bridge_native_rtp.c: Minor code cleanups." into 13 2017-01-05 13:22:43 -06:00
zuul
1fc8838883 Merge "res_pjsip_session: Access SIPDOMAIN via Dialplan." into 13 2017-01-05 07:43:51 -06:00
George Joseph
6fcf248fe3 Merge "acl.c: Improve ast_ouraddrfor() diagnostic messages." into 13 2017-01-04 22:06:40 -06:00
George Joseph
fd5fdb4e59 Merge "bridge_native_rtp.c: Fix native rtp bridge data race." into 13 2017-01-04 22:05:31 -06:00
George Joseph
3c48ab0532 Merge "chan_pjsip: Use session for retrieving CHANNEL() information." into 13 2017-01-04 16:25:47 -06:00
Alexander Traud
569dac8e50 res_pjsip_session: Access SIPDOMAIN via Dialplan.
This feature was available in the SIP channel driver chan_sip. For example,
Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
and dial remote SIP-URIs. This change here sets the SIP destination domain of
an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.

ASTERISK-26670 #close

Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243
2017-01-04 07:13:05 -06:00