Commit Graph

3655 Commits

Author SHA1 Message Date
Jenkins2
b39c727848 Merge "channel.c: Allow generic plc then channel formats are equal" into 13 2018-03-20 11:03:38 -05:00
Corey Farrell
6f304697b0 core: Remove dead symbols from asterisk.exports.in.
* dahdi_chan_name
* dahdi_chan_name_len
* dahdi_chan_mode
* __manager_event
* dialed_interface_info

Added comment about __progname and environ being needed for FreeBSD to
prevent accidental removal in the future.

Change-Id: I3ae026bc541cd9cb572be2ffa95fc359547642b5
2018-03-19 16:00:48 -06:00
George Joseph
373e7e3fb0 channel.c: Allow generic plc then channel formats are equal
If the two formats on a channel are equal, we don't transcode and since
the generic plc needs slin to work, it doesn't get invoked.

* A new configuration option "genericplc_on_equal_codecs" was added
  to the "plc" section of codecs.conf to allow generic packet loss
  concealment even if no transcoding was originally needed.
  Transcoding via SLIN is forced in this case.

ASTERISK-27743

Change-Id: I0577026a179dea34232e63123254b4e0508378f4
2018-03-19 10:09:53 -06:00
Alexander Traud
0f634c1446 BuildSystem: Remove unused dependency on libltdl.
Asterisk does not need the development package of libltdl, because it does not
use any symbol of -lltdl directly. Instead, it uses the runtime package via the
shared library -lodbc. On the supported platforms, that shared library declares
its dependency on -lltdl correctly, otherwise AST_EXT_LIB_CHECK would have
failed.

ASTERISK-27745

Change-Id: Icd315809b8e7978203431f3afb66240dd3a040ba
2018-03-17 04:02:17 -06:00
Jenkins2
a243fed64f Merge "core: Remove incorrect usage of attribute_malloc." into 13 2018-03-14 20:53:38 -05:00
Corey Farrell
dc738b145f core: Remove incorrect usage of attribute_malloc.
GCC documentation states that when __attribute__((malloc)) is used it
should not return storage which contains any valid pointers.  It
specifically mentions that realloc functions should not have the malloc
attribute, but this also means that complex initializers which could
contain initialized pointers should not use this attribute.

Change-Id: If507f33ffb3ca3b83b702196eb0e8215d27fc7d2
2018-03-13 17:37:12 -04:00
Alexander Traud
54874eb44d BuildSystem: Enable PortAudio in NetBSD.
In NetBSD, PortAudio 1 is still the default version. PortAudio 2 can be
installed side by side but gets placed in a 'portaudio2' subdirectory. To
find PortAudio 2 even in a subdirectory, the tool pkg-config is queried via
AST_PKG_CONFIG_CHECK. For those platforms, which do not list PowerAudio 2
via pkg-config, the previous check remains and is executed thereafter.

ASTERISK-27721

Change-Id: I4175500126909ad1b181fff8e11bb4a3a6ae4fa9
2018-03-08 04:01:25 -06:00
Jenkins2
91193807c8 Merge "BuildSystem: Detect whether uselocale(.) is available." into 13 2018-03-05 11:58:51 -06:00
Alexander Traud
98e8e849da BuildSystem: Detect whether uselocale(.) is available.
ASTERISK-27712
Reported by: Joerg Sonnenberger, D'Arcy Cain

Change-Id: Idf1c9d43617a3e13028b95b313415903d80ef807
2018-03-03 06:57:42 -06:00
Richard Mudgett
104468ad3a pjproject: Add cache_pools debugging option.
The pool cache gets in the way of finding use after free errors of memory
pool contents.  Tools like valgrind and MALLOC_DEBUG don't know when a
pool is released because it gets put into the cache instead of being
freed.

* Added the "cache_pools" option to pjproject.conf.  Disabling the option
helps track down pool content mismanagement when using valgrind or
MALLOC_DEBUG.  The cache gets in the way of determining if the pool
contents are used after free and who freed it.

To disable the pool caching simply disable the cache_pools option in
pjproject.conf and restart Asterisk.

Sample pjproject.conf setting:
[startup]
cache_pools=no

* Made current users of the caching pool factory initialization and
destruction calls call common routines to create and destroy cached pools.

ASTERISK-27704

Change-Id: I64d5befbaeed2532f93aa027a51eb52347d2b828
2018-02-28 11:38:40 -06:00
Kevin Harwell
ffb15b2bc7 AMI: Bumping AMI non-breaking number for Asterisk 13.20.0 release
A few changes were made to AMI:

 * Fixed "(null):" header in AMI AsyncAGIEnd event
 * A mute header was added to the ConfbridgeJoin AMI event
 * ConfbridgeList action's ConfbridgeList events now output all
   the standard channel snapshot headers

Change-Id: I94a82a44b02c91becae08d254e9a56abba5697cf
2018-02-22 14:04:02 -06:00
Alexander Traud
4a5221cd43 BuildSystem: Remove chan_h323 leftovers.
ASTERISK-27670

Change-Id: I07a8ef8bbd6001e25711fa1bff152eb6c9efa729
2018-02-14 09:31:36 +01:00
Jenkins2
62d491527e Merge "app_confbridge: Update dsp_silence_threshold and dsp_talking_threshold docs." into 13 2018-02-01 11:38:26 -06:00
George Joseph
7debdd285c res_pjsip_pubsub: Prune subs with reliable transports at startup
In an earlier release, inbound registrations on a reliable transport
were pruned on Asterisk restart since the TCP connection would have
been torn down and become unusable when Asterisk stopped.  This same
process is now also applied to inbound subscriptions.

Also fixed issues in res_pjsip_registrar where it wasn't handling the
monitoring correctly when multiple registrations came in over the same
transport.

To accomplish this, the pjsip_transport_event feature needed to
be refactored to allow multiple monitors (multiple subcriptions or
registrations from the same endpoint) to exist on the same transport.
Since this changed the API, any external modules that may have used the
transport monitor feature (highly unlikey) will need to be changed.

ASTERISK-27612
Reported by: Ross Beer

Change-Id: Iee87cf4eb9b7b2b93d5739a72af52d6ca8fbbe36
2018-02-01 10:32:26 -07:00
Richard Mudgett
4a337b1a76 app_confbridge: Update dsp_silence_threshold and dsp_talking_threshold docs.
The dsp_talking_threshold does not represent time in milliseconds.  It
represents the average magnitude per sample in the audio packets.  This is
what the DSP uses to determine if a packet is silence or talking/noise.

Change-Id: If6f939c100eb92a5ac6c21236559018eeaf58443
2018-01-31 13:11:55 -06:00
Jenkins2
d82da7afff Merge "loader: Use ast_cli_completion_add for 'module load' completion." into 13 2018-01-31 07:30:09 -06:00
Jenkins2
cee39bf820 Merge "pbx_variables.c: Misc fixes in variable substitution." into 13 2018-01-31 06:58:49 -06:00
Corey Farrell
154bccf147 loader: Use ast_cli_completion_add for 'module load' completion.
This addresses all performance issues with 'module load' completion.  In
addition to using ast_cli_completion_add we stop using libedit's
filename_completion_function, instead using ast_file_read_dir.  This
ensures all results are produced from a single call to opendir.

Change-Id: I8bf51ffaa7ef1606f3bd1b5bb13f1905d72c6134
2018-01-27 14:18:39 -06:00
Alexander Traud
e998c906a7 headers: Consistent use of typeof and/or __typeof__.
Because of a copy-and-paste error, the Asterisk project was using __typeof
instead of typeof. It works because typeof, __typeof, and __typeof__ are
supported by GCC, but here the escaped variant was not intended. Therefore,
for consistence, we change this to typeof.

Change-Id: I2a962c3e596e882f691a19345445b14571a5f07c
2018-01-27 03:25:53 -06:00
Richard Mudgett
85b384728c pbx_variables.c: Misc fixes in variable substitution.
* Copy more than one character at a time when there is nothing to
substitute.

* Fix off by one error if a '}' or ']' is missing.

* Eliminated the requirement that the "used" parameter had to point to a
variable.  The current callers were always declaring a variable to meet
the requirement and discarding the value put into that variable.  Now it
can be NULL.

* In ast_str_substitute_variables_full() fixed using the bogus channel to
evaluate a function.  We were not using the bogus channel we just created
to help evaluate a subexpression.

Change-Id: Ia83d99f4f16abe47f329eb39b6ff2013ae7c9854
2018-01-22 12:32:37 -06:00
Richard Mudgett
f35960d55b res_pjsip: Split type=identify to IP address and SIP header matching priorities
The type=identify endpoint identification method can match by IP address
and by SIP header.  However, the SIP header matching has limited
usefulness because you cannot specify the SIP header matching priority
relative to the IP address matching.  All the matching happens at the same
priority and the order of evaluating the identify sections is
indeterminate.  e.g., If you had two type=identify sections where one
matches by IP address for endpoint alice and the other matches by SIP
header for endpoint bob then you couldn't predict which endpoint is
matched when a request comes in that matches both.

* Extract the SIP header matching criteria into its own "header" endpoint
identification method so the user can specify the relative priority of the
SIP header and the IP address matching criteria in the global
endpoint_identifier_order option.  The "ip" endpoint identification method
now only matches by IP address.

ASTERISK-27491

Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095
2018-01-11 14:14:08 -06:00
Corey Farrell
b275b0a84f astobj2: Create case-insensitive variants of container function macros.
* AO2_STRING_FIELD_CASE_HASH_FN
* AO2_STRING_FIELD_CASE_CMP_FN
* AO2_STRING_FIELD_CASE_SORT_FN

Change-Id: I11af8c6a0c43380a42732553f519c667abb842cf
2017-12-30 12:47:54 -06:00
Sean Bright
ce3d56920b Remove as much trailing whitespace as possible.
Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0
2017-12-22 09:14:07 -05:00
Corey Farrell
82b6ba976f Fix Common Typo's.
Fix instances of:
* Retreive
* Recieve
* other then
* different then
* Repeated words ("the the", "an an", "and and", etc).
* othterwise, teh

ASTERISK-24198 #close

Change-Id: I3809a9c113b92fd9d0d9f9bac98e9c66dc8b2d31
2017-12-20 12:54:13 -05:00
Richard Mudgett
4f45748f52 manager.h: Bump AMI version
Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf
2017-12-20 11:30:54 -06:00
Jenkins2
b6d03c086b Merge "aco: Create ways to minimize use of regex." into 13 2017-12-18 13:14:07 -06:00
George Joseph
d6ea23d60e Merge "loader: Replace priority heap with vector." into 13 2017-12-18 10:24:43 -06:00
Corey Farrell
d5a7a98528 loader: Replace priority heap with vector.
This is needed for future changes which will require being able to
process the load priority out of order.

Change-Id: Ia23421197f09789940510b03ebbbf3bf24d51bea
2017-12-15 10:45:01 -05:00
Corey Farrell
7413bcbeb5 aco: Create ways to minimize use of regex.
ACO uses regex in many situations where it is completely unneeded.  In
some cases this doubles the total processing performed by
aco_process_config.

* Create ACO_IGNORE category type for use in place of skip_category
  regex source string.
* Create additional aco_category_op values to allow specifying category
  filter using either a single plain string or a NULL terminated array
  of plain strings.
* Create ACO_PREFIX to allow matching option names to case insensitive
  prefixes.

Change-Id: I66a920dcd8e2b0301f73f968016440a985e72821
2017-12-15 10:19:41 -05:00
Richard Mudgett
61e81338d9 res_rtp_asterisk.c: Disable packet flood detection for video streams.
We should not do flood detection on video RTP streams.  Video RTP streams
are very bursty by nature.  They send out a burst of packets to update the
video frame then wait for the next video frame update.  Really only audio
streams can be checked for flooding.  The others are either bursty or
don't have a set rate.

* Added code to selectively disable packet flood detection for video RTP
streams.

ASTERISK-27440

Change-Id: I78031491a6e75c2d4b1e9c2462dc498fe9880a70
2017-12-14 14:40:17 -06:00
Richard Mudgett
73b3390dbe chan_pjsip/res_pjsip: Add CHANNEL(pjsip,request_uri)
This patch does three things associated with the initial incoming INVITE
request URI.

1) Add access to the full initial incoming INVITE request URI.

2) We were not setting DNID on incoming PJSIP channels.  The DNID is the
user portion of the initial incoming INVITE Request-URI.  The value is
accessed by reading CALLERID(dnid).

3) Fix CHANNEL(pjsip,target_uri) documentation.

* The initial incoming INVITE request URI is now available using
CHANNEL(pjsip,request_uri).

* Set the DNID on PJSIP channel creation so CALLERID(dnid) can return the
initial incoming INVITE request URI user portion.

* CHANNEL(pjsip,target_uri) now correctly documents that the target URI is
the contact URI.

* Refactored print_escaped_uri() out of channel_read_pjsip() to handle
pjsip_uri_print() error condition when the buffer is too small.

ASTERISK-27478

Change-Id: I512e60d1f162395c946451becb37af3333337b33
2017-12-12 13:45:58 -06:00
Jenkins2
3bfddd9e73 Merge "astdb: Improve prefix searches in astdb" into 13 2017-12-11 11:42:27 -06:00
Sean Bright
a4b291029f astdb: Improve prefix searches in astdb
Using the LIKE operator requires a full table scan of 'astdb', whereas a
comparison operation is able to use the primary key index.

This patch adds a new function to the AstDB API for quick prefix matches
and updates res_sorcery_astdb to utilize it. This showed substantial
performance improvement in my test environment.

Related to ASTERISK~26806, but does not completely resolve it.

Change-Id: I7d37f9ba2aea139dabf2ca72d31fbe34bd9b2fa1
2017-12-10 12:41:51 -06:00
Sean Bright
f726f11974 utils: Add convenience function for setting fd flags
There are many places in the code base where we ignore the return value
of fcntl() when getting/setting file descriptior flags. This patch
introduces a convenience function that allows setting or clearing file
descriptor flags and will also log an error on failure for later
analysis.

Change-Id: I8b81901e1b1bd537ca632567cdb408931c6eded7
2017-12-08 14:27:50 -05:00
Richard Mudgett
594faa192d security-events: Fix SuccessfulAuth using_password declaration.
The SuccessfulAuth using_password field was declared as a pointer to a
uint32_t when the field was later read as a uint32_t value.  This resulted
in unnecessary casts and a non-portable field value reinterpret in
main/security_events.c:add_json_object().  i.e., It would work on a 32 bit
architecture but not on a 64 bit big endian architecture.

Change-Id: Ia08bc797613a62f07e5473425f9ccd8d77c80935
2017-12-04 17:19:23 -06:00
Jenkins2
2e3f878423 Merge "CLI: Create ast_cli_completion_add function." into 13 2017-11-27 12:10:11 -06:00
George Joseph
635583dabd Merge "CLI: Remove calls to ast_cli_generator." into 13 2017-11-27 11:32:06 -06:00
Joshua Colp
3d429a5072 Merge "BuildSystem: pjsip_evsub_set_uas_timeout was not used." into 13 2017-11-21 09:53:54 -06:00
Corey Farrell
8a63f4e709 CLI: Create ast_cli_completion_add function.
Some completion generators are very inefficent due to the way CLI
requests matches one at a time.  ast_cli_completion_add can be called
multiple times during one invokation of a CLI generator to add all
results without having to reinitialize the search state for each match.

Change-Id: I73d26d270bbbe1e3e6390799cfc1b639e39cceec
2017-11-21 09:47:40 -05:00
Corey Farrell
115f53a0fb CLI: Remove calls to ast_cli_generator.
The ability to add to localized storage cannot be supported by
ast_cli_generator.  The only calls to ast_cli_generator should be by
functions that need to proxy the CLI generator, for example 'cli check
permissions' or 'core show help'.

* ast_cli_generatornummatches now retrieves the vector of matches and
  reports the number of elements (not including 'best' match).
* test_substitution retrieves and iterates the vector.

Change-Id: I8cd6b93905363cf7a33a2d2b0e2a8f8446d9f248
2017-11-21 09:47:38 -05:00
Joshua Colp
29bf57ff2f Merge "CLI: Create ast_cli_completion_vector." into 13 2017-11-21 05:23:58 -06:00
Joshua Colp
4045cb4df9 Merge "README: Send people to secure websites where available." into 13 2017-11-21 05:23:50 -06:00
Alexander Traud
50cb5199c1 BuildSystem: pjsip_evsub_set_uas_timeout was not used.
ASTERISK-27435

Change-Id: Id318a7ae6d7d69b53f911d30bf3eece64852f15c
2017-11-20 09:56:30 -06:00
Corey Farrell
5f0b4a1645 README: Send people to secure websites where available.
We should be sending people to secure web URL's where available.
Update README's and docs.

Change-Id: Id5b1e049b0b18b49a784f1254605aefa244ce19a
2017-11-17 21:11:13 -05:00
Corey Farrell
a369bfc4b2 doxygen: Remove obsolete contents.
Remove doxygen contents that have nothing to do with the current state
of Asterisk.

Change-Id: Ic072cc8641f9533a202990ccf275ce87e3efd95c
2017-11-17 20:58:28 -05:00
Joshua Colp
ef8ee3ee69 Merge "Build: Make function constructor/destructor attributes mandatory." into 13 2017-11-17 09:18:39 -06:00
Corey Farrell
0b8b153d3c CLI: Create ast_cli_completion_vector.
This is a rewrite of ast_cli_completion_matches using a vector to build
the list.  The original function calls the vector version, NULL
terminates the vector and extracts the elements array.

One change in behavior the results are now sorted and deduplicated. This
will solve bugs where some duplicate checking was done before the list
was sorted.

Change-Id: Iede20c5b4d965fa5ec71fda136ce9425eeb69519
2017-11-17 09:28:43 -05:00
Joshua Colp
8d55b132b9 Merge "sorcery: Add ast_sorcery_retrieve_by_prefix()" into 13 2017-11-16 10:59:23 -06:00
Jenkins2
9fb2da7963 Merge "pjsip / hep: Provide correct local address for Websockets." into 13 2017-11-16 10:57:28 -06:00
Joshua Colp
f233e421dd Merge "core: Add cache_media_frames debugging option." into 13 2017-11-14 07:15:40 -06:00