Commit Graph

5562 Commits

Author SHA1 Message Date
Jenkins2 841fc3e5c2 Merge "stasis: Release object if vector append fails." into 13 2017-11-07 16:11:13 -06:00
Joshua Colp 7657519a53 Merge "format_cap: Fix leak on AST_VECTOR_APPEND error." into 13 2017-11-07 14:32:15 -06:00
Joshua Colp 5a60ce3ee3 Merge "Messaging: Report error on failure to register tech or handler." into 13 2017-11-07 14:31:59 -06:00
Jenkins2 cb1ec6255f Merge "CLI: Remove unused internal command." into 13 2017-11-07 12:47:42 -06:00
Joshua Colp 5d19dc2cb1 Merge "tcptls: Print notice when TLS is enabled but not configured." into 13 2017-11-07 09:42:34 -06:00
Joshua Colp 315ccf40f4 Merge "stasis: Remove silly use of RAII_VAR in stasis_forward_all." into 13 2017-11-07 08:52:39 -06:00
Jenkins2 ec40b74e51 Merge "stasis_channels.c: Remove a very silly RAII_VAR()." into 13 2017-11-07 08:09:07 -06:00
Jenkins2 37863c163c Merge "Fix ast_(v)asprintf() malloc failure usage conditions." into 13 2017-11-07 06:41:50 -06:00
Corey Farrell 3dc600ef84 stasis: Release object if vector append fails.
Change-Id: I3e5cc669169aab6175ddfaf7486edeaeb4fdcfb1
2017-11-06 16:36:55 -05:00
Corey Farrell fc041554c3 RTP Engine: Deal with errors returned from AST_VECTOR_REPLACE.
Check for errors from AST_VECTOR_REPLACE and clean memory if needed.

Change-Id: I124d15cc1d645f85a72a1279f623c1993b304b0b
2017-11-06 16:30:10 -05:00
Corey Farrell 75539dbf2c Messaging: Report error on failure to register tech or handler.
Message tech and handler registrations use a vector which could fail to
expand.  If it does log and error and return error.

Change-Id: I593a8de81a07fb0452e9b0efd5d4018b77bca6f4
2017-11-06 16:13:58 -05:00
Corey Farrell b4240bea6c format_cap: Fix leak on AST_VECTOR_APPEND error.
format_cap_framed_init can fail on AST_VECTOR_APPEND.  This should
report failure to the caller and clean the newly allocated frame.

Change-Id: Ica0661235bf09497bf23d844ceb01f21b41a55b0
2017-11-06 16:12:12 -05:00
Corey Farrell 803dc3dee5 stasis: Remove silly use of RAII_VAR in stasis_forward_all.
Change-Id: I46de4c968d40144d5b049966304ff66c1469fb65
2017-11-06 15:24:57 -05:00
Corey Farrell 0a0e2c4253 CLI: Remove unused internal command.
The internal CLI command "_command complete" was last used by Asterisk
0.2.0.  Since then we've been using "_command nummatches" and "_command
matchesarray".

Change-Id: I682fe1e21a24a3bb5bd04146e639f1c5866bcfce
2017-11-06 13:51:50 -05:00
Richard Mudgett 6bc8af2433 stasis_channels.c: Remove a very silly RAII_VAR().
Change-Id: I28b458b3c1a442c4ef0be7b4986a95ea4149e14f
2017-11-06 11:58:57 -06:00
Richard Mudgett 9013415593 Fix ast_(v)asprintf() malloc failure usage conditions.
When (v)asprintf() fails, the state of the allocated buffer is undefined.
The library had better not leave an allocated buffer as a result or no one
will know to free it.  The most likely way it can return failure is for an
allocation failure.  If the printf conversion fails then you actually have
a threading problem which is much worse because another thread modified
the parameter values.

* Made __ast_asprintf()/__ast_vasprintf() set the returned buffer to NULL
on failure.  That is much more useful than either an uninitialized pointer
or a pointer that has already been freed.  Many uses won't have to check
for failure to ensure that the buffer won't be double freed or prevent an
attempt to free an uninitialized pointer.

* stasis.c: Fixed memory leak in multi_object_blob_to_ami() allocated by
ast_asprintf().

* ari/resource_bridges.c:ari_bridges_play_helper(): Remove assignment to
the wrong thing which is now not needed even if assigning to the right
thing.

Change-Id: Ib5252fb8850ecf0f78ed0ee2ca0796bda7e91c23
2017-11-06 11:46:06 -06:00
Joshua Colp 1479d2603e Merge "Stasis/ARI: Fix off-nominal path json memory leaks." into 13 2017-11-06 08:39:20 -06:00
Jenkins2 6e34cf6af7 Merge "AOC: Fix AOC-S json memory leak." into 13 2017-11-06 07:19:41 -06:00
Alexander Traud 7dd2b18e32 tcptls: Print notice when TLS is enabled but not configured.
Asterisk can be compiled without a SSL/TLS library, without the Development
Headers of OpenSSL. However, if TLS (SIP) or Secure-WebSockets (WebRTC) was
enabled in a configuration file, Asterisk did not notice the user. Asterisk
failed silently, only the corresponding TCP ports were not open.

ASTERISK-27394
Reported-by: mossley74

Change-Id: Ib8b7539a5b2af8154c22e5f7a40fc68f95d95b93
2017-11-06 04:28:13 -05:00
Richard Mudgett 3bce5a9dfa Stasis/ARI: Fix off-nominal path json memory leaks.
Change-Id: Id569c624c426e3b22a99936473c730592d8b83fb
2017-11-03 13:08:33 -05:00
Richard Mudgett 675e50b903 AOC: Fix AOC-S json memory leak.
Change-Id: I3a1d40a41a8a7d00fa4a187de6a343a79155d3ef
2017-11-03 12:51:02 -05:00
Corey Farrell d3cfcc0da6 Build System: Fix build failure caused by recent CLI improvements.
We use the editline library to help with filename completion in our CLI
interface.  Some systems failed to find the header when included from
loader.c.  This is fixed by setting the proper CFLAGS for the build of
loader.o.

ASTERISK-27378

Change-Id: Ib7fd496f1d7ed48141a2eadd5dd61cab2f2308be
2017-11-03 10:39:38 -05:00
Corey Farrell bfb0f27c87 Modules: Additional improvements to CLI completion.
Replace 'needsreload' argument with a 'type' argument to specify which
type of modules you want completion.  This provides more accurate CLI
completion for load and unload commands.

* 'module unload' now excludes modules that have active references or are
  not running.
* 'module load' now excludes modules that are already running.
* 'core set debug [atleast] <level> [module]' shows running modules only.

ASTERISK-27378

Change-Id: Iea3e00054461484196c46f688f02635cc886bad1
2017-11-02 07:31:20 -05:00
Kevin Harwell a7c00707a5 features: Bridge application's BRIDGERESULT not appropriately set
The dialplan application "Bridge" was not setting the BRIDGERESULT to failure
when a failure did occur. Even worse if it did fail to join the bridge it would
still report success.

This patch now sets the BRIDGERESULT variable to an appropriate value for a
given condition state. Also, removed the value INCOMPATIBLE as a valid result
type since it is no longer used.

ASTERISK-27369 #close

Change-Id: I22588e7125a765edf35cff28c98ca143e9927554
2017-10-31 15:08:38 -05:00
Jenkins2 71d3f2cb90 Merge "Build System: Fix --disable-xmldoc option." into 13 2017-10-31 06:17:48 -05:00
Corey Farrell cee81b3c8b Modules: Fix issues with CLI completion.
* Stop using ast_module_helper to check if a module is loaded, use
  ast_module_check instead (app_confbridge and app_meetme).
* Stop ast_module_helper from listing reload classes when needsreload
  was not requested.

ASTERISK-27378

Change-Id: Iaed8c1e4fcbeb242921dbac7929a0fe75ff4b239
2017-10-30 00:40:12 -05:00
Richard Mudgett ca7f3d297b codec.c: Defensively check the returned samples.
Earlier versions of the codec_opus samples_count callback can return
negative error values on undecodable frames.  This resulted in a divide by
zero exception.

* Added a defensive check in ast_codec_samples_count() for a "negative"
samples count return value.  Log the event and set the count to zero.

ASTERISK-27194

Change-Id: Icf69350307ecbbc80a3d74de46af9bd80ea17819
2017-10-26 11:48:23 -05:00
Joshua Colp 28368b3553 Merge "http.c: Fix http header send content." into 13 2017-10-25 12:42:09 -05:00
Corey Farrell 4772849016 Build System: Fix --disable-xmldoc option.
The configure option to disable XML documentation does not currently
work.  This patch makes it effective, but also causes an ABI change by
removing the ast_xmldoc_* symbols.  Disabling xmldoc also prevents docs
from being automatically generated, but they can still be manually
generated with 'make doc/core-en_US.xml'.

ASTERISK-26639

Change-Id: Ifac562340c09f80c83e0203de098fcac93bf8c44
2017-10-25 10:26:16 -05:00
Ben Ford dfe00b80e7 http.c: Fix http header send content.
Currently ast_http_send barricades a portion of the content that
needs to be sent in order to establish a connection for things
like the ARI client. The conditional and contents have been changed
to ensure that everything that needs to be sent, will be sent.

ASTERISK-27372

Change-Id: I8816d2d8f80f4fefc6dcae4b5fdfc97f1e46496d
2017-10-25 10:18:33 -05:00
Corey Farrell 23d05ebc49 hashtab: Use ast_free.
A few places in hashtab use free instead of ast_free.

Change-Id: I2ff089bad71640c03c3ce97f1b00fc962ef79427
2017-10-24 17:17:53 -04:00
Corey Farrell ec278955a3 main/Makefile: Remove rule for non-existant testexpr2.
Change-Id: Ibb3e47f27a395d74d8c5263db015b05434f5969b
2017-10-23 14:46:03 -04:00
Richard Mudgett 7f8c212e75 cdr.c: Rename the Party A CDR container.
* Rename the Party A CDR container from active_cdrs_by_channel to
active_cdrs_master.

* Renamed the support functions associated with active_cdrs_master
appropriately.

ASTERISK-27335

Change-Id: I6104bb3edc3a0b7243ce502e45e8832b0cff14f7
2017-10-16 12:23:35 -05:00
Richard Mudgett 85723a9e50 cdr.c: Add container to key off of Party B channel names.
The CDR performance gets worse the further it gets behind in processing
stasis messages.  One of the reasons is because of a n*m loop used when
processing Party B information.

* Added a new CDR container that is keyed to Party B so we don't need such
a large loop when processing Party B information.

NOTE: To reduce the size of the patch I deferred to another patch the
renaming of the Party A active_cdrs_by_channel container to
active_cdrs_master and renaming the container's hash and cmp functions
appropriately.

ASTERISK-27335

Change-Id: I0bf66e8868f8adaa4b5dcf9e682e34951c350249
2017-10-16 12:23:35 -05:00
Tzafrir Cohen 944e500e95 declare optional openssl dependencies in moduleinfo
Declare optional openssl dependencies in:
* res_rtp_asterisk.c
* tcptls.c

ASTERISK-27328 #close

Change-Id: I2636f1c05b8104b4fe6f36cce0ebd9a98b9c78ab
2017-10-16 06:03:13 -05:00
Jenkins2 ce0ef34020 Merge "ast_bt_get_symbols: Prevent double-free." into 13 2017-10-15 14:20:37 -05:00
Jenkins2 3b1324b13e Merge "tcptls: NULL-check the parameter of ast_ssl_teardown before accessing it." into 13 2017-10-15 13:53:45 -05:00
Jenkins2 6fc88e80e8 Merge "cdr.c: Eliminated many calls to ao2_global_obj_ref()." into 13 2017-10-13 18:43:03 -05:00
Jenkins2 31cbb53a0a Merge "cdr.c: Defer getting ao2_global_obj_ref() until needed." into 13 2017-10-13 17:55:34 -05:00
Jenkins2 bf21ba9c2d Merge "cdr.c: Set stringfields only if they are different." into 13 2017-10-13 17:00:10 -05:00
Jenkins2 d0cd6cb1a7 Merge "cdr.c: Fix setting dnid, callingsubaddr, and calledsubaddr" into 13 2017-10-13 16:44:38 -05:00
Corey Farrell 89f11364f6 ast_bt_get_symbols: Prevent double-free.
It's possible for bfdobj to be created but syms not created.  If syms
was not allocated in the current loop iteration but was allocated in the
previous iteration it would crash.

ASTERISK-27340

Change-Id: I5b110c609f6dfe91339f782a99a431bca5837363
2017-10-13 09:51:09 -04:00
Alexander Traud 114ed320ea tcptls: NULL-check the parameter of ast_ssl_teardown before accessing it.
This avoids a crash on stopping a chan_sip which failed to start its TLS server.

ASTERISK-27339 #close

Change-Id: I327fc70db68eaaca5b50a15c7fd687fde79263d5
2017-10-13 08:14:47 -05:00
Joshua Colp 7215d07ca2 Merge "features, manager : Add CancelAtxfer AMI action" into 13 2017-10-13 07:44:39 -05:00
Richard Mudgett a8c6c3bd7d cdr.c: Eliminated many calls to ao2_global_obj_ref().
The CDR performance gets worse the further it gets behind in processing
stasis messages.  One of the reasons is we were getting the global config
to determine if we needed to log a debugging message.

* Many calls to ao2_global_obj_ref() were just so we could determine if
debug mode is enabled.  Made a global flag to check instead.

* Eliminated many RAII_VAR() usages associated with the remaining
ao2_global_obj_ref() calls.

* Added missing NULL checks for the returned ao2_global_obj_ref() value.

ASTERISK-27335

Change-Id: Iceaad93172862f610cad0188956634187bfcc7cd
2017-10-12 19:11:02 -05:00
Richard Mudgett b56fa63db8 cdr.c: Defer getting ao2_global_obj_ref() until needed.
The CDR performance gets worse the further it gets behind in processing
stasis messages.  One of the reasons is we were getting the global config
even if we didn't need it.

* Most uses of the global config were only needed on off nominal code
paths so it makes sense to not get it until absolutely needed.

ASTERISK-27335

Change-Id: I00c63b7ec233e5bfffd5d976f05568613d3c2365
2017-10-12 19:11:02 -05:00
Richard Mudgett 92c5cf3920 cdr.c: Set stringfields only if they are different.
The CDR performance gets worse the further it gets behind in processing
stasis messages.  One of the reasons is we were repeatedly setting string
fields to potentially the same string in base_process_party_a().  Setting
a string field involves allocating room for the new string out of a memory
pool which may have to allocate even more memory.

* Check to see if the string field is already set to the desired string.

ASTERISK-27335

Change-Id: I3ccb7e23f1488417e08cafe477755033eed65a7c
2017-10-12 19:11:02 -05:00
Richard Mudgett 6393c106ca cdr.c: Fix setting dnid, callingsubaddr, and calledsubaddr
The string comparisons for setting these CDR variables was inverted.  We
were repeatedly setting these CDR variables only if the channel snapshots
had the same value.

ASTERISK-27335

Change-Id: I9482073524411e7ea6c03805b16de200cb1669ea
2017-10-12 19:11:02 -05:00
Thomas Sevestre 6d3ee9fb93 features, manager : Add CancelAtxfer AMI action
Add action to cancel feature attended transfer with AMI interface

ASTERISK-27215 #close

Change-Id: Iab8a81362b5a1757e2608f70b014ef863200cb42
2017-10-12 12:17:45 -05:00
Richard Mudgett 5f6bad6733 cdr.c: Defer misc checks.
Try to defer some checks until needed in case there is an early exit.

Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064
2017-10-11 13:28:26 -05:00