summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-01-24PJPROJECT logging: Fix detection of max supported log level.Richard Mudgett
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-24Merge "res_pjsip_endpoint_identifier_ip: Read settings before resolving." ↵George Joseph
into 13
2017-01-23Merge "LISTFILTER: Remove outdated ERROR message." into 13George Joseph
2017-01-23Merge "res_pjsip_pubsub.c: Fix incorrect message string wrapping." into 13George Joseph
2017-01-23Merge "res_pjsip_pubsub.c: Fix AMI event list counts." into 13Joshua Colp
2017-01-23res_pjsip_endpoint_identifier_ip: Read settings before resolving.Joshua Colp
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-23Merge "res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage." into 13Joshua Colp
2017-01-22LISTFILTER: Remove outdated ERROR message.Richard Mudgett
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-20Merge "res_pjsip: alloca can never fail." into 13zuul
2017-01-20Merge "debug_utilities: Create ast_loggrabber" into 13zuul
2017-01-20Merge "abstract/fixed/adpative jitter buffer: disallow frame re-inserts" into 13zuul
2017-01-20res_pjsip_pubsub.c: Fix AMI event list counts.Richard Mudgett
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-20res_pjsip_pubsub.c: Fix incorrect message string wrapping.Richard Mudgett
Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120
2017-01-20res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage.Richard Mudgett
Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be
2017-01-20res_pjsip: alloca can never fail.Richard Mudgett
Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1
2017-01-20debug_utilities: Create ast_loggrabberGeorge Joseph
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 5fa1c56d7e76999aa14f133a33f6b168e7c3b99c)
2017-01-20res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages.Richard Mudgett
Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49
2017-01-17abstract/fixed/adpative jitter buffer: disallow frame re-insertsKevin Harwell
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-13taskprocessor.c: Change when high water warning logged.Richard Mudgett
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-12Merge "res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt)" into 13zuul
2017-01-12res_rtp_asterisk: Fix bug in function CHANNEL(rtcp, all_rtt)Aaron An
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-11debug_utilities: Create the ast_coredumper utilityGeorge Joseph
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-09Merge "res_pjsip_endpoint_identifier_ip: Add support for SRV lookups." into 13Joshua Colp
2017-01-09Merge "chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND." into 13Joshua Colp
2017-01-09Merge "res_pjsip: Fix known compact header issues" into 13Joshua Colp
2017-01-09Merge changes from topic 'ASTERISK-26672' into 13Joshua Colp
* changes: res_rtp_asterisk.c: Fix uninitialized memory crash. chan_rtp.c: Fix uninitialized memory crash.
2017-01-08pjproject_bundled: Fix compilation with MALLOC_DEBUGGeorge Joseph
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-06Merge "res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip()." into 13zuul
2017-01-06res_pjsip_endpoint_identifier_ip: Add support for SRV lookups.Joshua Colp
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-05Merge "bridge_native_rtp.c: Minor code cleanups." into 13zuul
2017-01-05Merge "res_pjsip_session: Access SIPDOMAIN via Dialplan." into 13zuul
2017-01-04Merge "acl.c: Improve ast_ouraddrfor() diagnostic messages." into 13George Joseph
2017-01-04Merge "bridge_native_rtp.c: Fix native rtp bridge data race." into 13George Joseph
2017-01-04Merge "chan_pjsip: Use session for retrieving CHANNEL() information." into 13George Joseph
2017-01-04res_pjsip_session: Access SIPDOMAIN via Dialplan.Alexander Traud
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-04chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND.Alexander Traud
After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats but remember the joint format. Cached formats contain default parameters, often create an empty fmtp line. However, a joint format might have passed format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and contain the resulting format parameters from a SDP negotiation. ASTERISK-26691 #close Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc
2017-01-03pjproject_bundled: Compile pjsua with max log level = 2George Joseph
A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6. This allowed us to control the log level better from inside Asterisk. An unfortunate side effect of this was that the pjsua binary and python bindings were also compiled with log level set to 6 so whenever a testsuite test that uses pjsua runs, it spits out 6795 lines of debug in an instant even before the test starts. I believe this overruns the Jenkins capture buffer and prevents the test from properly terminating. In turn, this results in the testsuite just hanging until the job is killed. It's more frequent on the higher end agents because they can spit out the messages faster. Unfortunately, the messages are all spit out before we have control of the python pj.Lib instance where we can set logging levels so the only alternative was to actually compile pjsua and _pjsua.so with an overridden PJ_LOG_MAX_LEVEL. Although defining a lower max level was done in the Makefile, the define in config_site.h had to be wrapped with "#ifndef" so the change would take effect. Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff
2017-01-03chan_pjsip: Use session for retrieving CHANNEL() information.Joshua Colp
The CHANNEL() dialplan function implementation for PJSIP allows querying of PJSIP specific information. This used the channel passed in to get the PJSIP session and associated information. It is possible for this channel to be masqueraded and end up as a different channel type by the time the information request is actually acted upon. This change retrieves the PJSIP session safely and accesses data from it (including channel). This provides a guarantee that the session and channel will not be altered when the request is being acted upon. ASTERISK-26673 Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6
2016-12-31res_pjsip: Fix known compact header issuesJoshua Elson
ASTERISK-26684 #close Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a
2016-12-30res_pjsip_refer: Handle compact Refer-To header.George Joseph
refer_incoming_refer_request needed to look for the "r" header as well as the "Refer-To" header. ASTERISK-26655 #close patches: refer_compact_fix.diff submitted by JoshE (license 6075) Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f
2016-12-23bridge_native_rtp.c: Minor code cleanups.Richard Mudgett
In native_rtp_bridge_compatible_check() * Made one variable declaration per line. * Extracted if test assignment to make the test easier to see. * Made long if tests easier to see the combinatorial logic. * Added bridge id to a couple debug messages. Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad
2016-12-23bridge_native_rtp.c: Fix native rtp bridge data race.Richard Mudgett
native_rtp_bridge_compatible() didn't lock the bridge channels before checking the channels for native bridging ability. As a result, one of the channel's native format capabilities structure got replaced out from under the native bridge check. Use of a stale pointer to freed memory causes bad things to happen. MALLOC_DEBUG, DO_CRASH, and the tests/channels/pjsip/transfers/blind_transfer/caller_direct_media testsuite test caught this. * Add missing channel locking in native_rtp_bridge_compatible(). Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53
2016-12-22res_rtp_asterisk.c: Fix uninitialized memory crash.Richard Mudgett
ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' parameter may not get initialized. Thus when the code tries to save the 'us' parameter to the local address we could try to copy a ridiculous sized memory buffer and segfault. * Made pass an initialized 'us' parameter to ast_ouraddrfor(). * Optimized out the 'us' struct variable. ASTERISK-26672 #close Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
2016-12-22res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip().Richard Mudgett
We access uninitialized memory when the 'ourip' parameter does not have an initial guess to our IP address. ASTERISK-26672 Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
2016-12-22acl.c: Improve ast_ouraddrfor() diagnostic messages.Richard Mudgett
* Made not generate strings unless they will actually be used. ASTERISK-26672 Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3
2016-12-22chan_rtp.c: Fix uninitialized memory crash.Richard Mudgett
unicast_rtp_request() could pass an uninitialized 'us' parameter to ast_ouraddrfor(). If ast_ouraddrfor() returns an error then the 'us' parameter may not get initialized. Thus when the code tries to save the 'us' parameter to the local address we could try to copy a ridiculous sized memory buffer and segfault. * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort the UnicastRTP channel request if it fails. ASTERISK-26672 Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0
2016-12-21res_rtp_asterisk.c: Fix off nominal memory leak.Richard Mudgett
Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75
2016-12-20Merge "pjproject_bundled: Make build single threaded" into 13Joshua Colp
2016-12-20Merge "res_pjsip: Add/update ERROR msg if invalid URI." into 13Joshua Colp
2016-12-19Merge "autosupport: Add 'pjproject show buildopts'" into 13George Joseph