Commit Graph

31618 Commits

Author SHA1 Message Date
Corey Farrell
f06de6900e threadpool: Eliminate pointless AO2 usage.
thread_worker_pair, set_size_data and task_pushed_data structures are
allocated with AO2 objects, passed to a taskprocessor, then released.
They never have multiple owners or use locking so AO2 only adds
overhead.

Change-Id: I2204d2615d9d952670fcb48e0a9c0dd1a6ba5036
2018-10-13 06:22:19 -05:00
Jenkins2
265d91a120 Merge "loader: Flag module as declined in all cases where it fails to load." 2018-10-10 12:26:58 -05:00
George Joseph
f7fb47e5cd Merge "core/frame: generate correct T.140 payload in ast_sendtext_data()" 2018-10-05 14:32:43 -05:00
George Joseph
b3a97a850b Merge "func_periodic_hook.c: Cleanup module resources on failure." 2018-10-05 14:32:21 -05:00
George Joseph
4f3b7e08c9 Merge "codec_speex.c: Cleanup module loading to DECLINE and not FAILURE." 2018-10-05 14:30:40 -05:00
George Joseph
0056f260dd Merge "res_smdi.c: Fix module ref counting and inverted test." 2018-10-05 10:52:18 -05:00
George Joseph
9549511731 Merge "res_statsd.c: Made use defaults if the statsd.conf file does not exist." 2018-10-05 10:10:28 -05:00
George Joseph
4b90cb1cd0 Merge "res_smdi.c: Made use defaults if the smdi.conf file does not exist." 2018-10-05 10:09:50 -05:00
neutrino88
17f4e6ad4d core/frame: generate correct T.140 payload in ast_sendtext_data()
ast_sendtext_data() would create an incorrect T.140 text frame which
length include the null terminator byte. It causes ultimately RTP
packets to be send with this trailing 0. The proposed fix just set the
correct length to the text frame

ASTERISK-28089
Reported by: Emmanuel BUU
Tested by: Emmanuel BUU

Change-Id: I7ab1b9ed1e21683b2b667ea0a59d9aba3c77dd96
2018-10-05 08:57:53 -05:00
Corey Farrell
c8ee1a183f loader: Flag module as declined in all cases where it fails to load.
This has no effect on startup since AST_MODULE_LOAD_FAILURE aborts
startup, but it's possible for this code to be returned on manual load
of a module after startup.

It is an error for a module to not have a load callback but this is not
a fatal system error.  In this case flag the module as declined, return
AST_MODULE_LOAD_FAILURE only if a required module is broken.

Expand doxygen documentation for AST_MODULE_LOAD_*.

Change-Id: I3c030bb917f6e5a0dfd9d91491a4661b348cabf8
2018-10-04 19:40:47 -04:00
Richard Mudgett
c6c3a63696 func_periodic_hook.c: Cleanup module resources on failure.
* Make load_module() cleanup if it failed to setup the module.

* Make unload_module() always return 0.  It is silly to fail unloading if
the hook function we try to unregister was not even registered.

Change-Id: I280fc6e8ba2a7ee2588ca01d870eebaf74b4ffe6
2018-10-04 14:38:52 -05:00
Richard Mudgett
9f02861d22 codec_speex.c: Cleanup module loading to DECLINE and not FAILURE.
If codec_speex fails to register a translator it would cause Asterisk to
exit instead of continue as a DECLINED module.

* Make unload_module() always return 0.  It is silly to fail unloading if
any translators we try to unregister were not even registered.

Change-Id: Ia262591f68333dad17673ba7104d11c88096f51a
2018-10-04 14:36:47 -05:00
George Joseph
30717bafbf CI: Fix missing () in gates.jenkinsfile
Change-Id: I2f252e0f8c7f1a6328438fbd2be5d6574b7dfa5b
2018-10-04 13:04:12 -05:00
Jenkins2
0db94c7519 Merge "CI: Add timestamps and timeouts to jenkinsfiles" 2018-10-04 12:50:18 -05:00
Jenkins2
e430442c4c Merge "jenkins: Fix cleanup command redirection." 2018-10-04 11:28:39 -05:00
George Joseph
58622a87f4 CI: Add timestamps and timeouts to jenkinsfiles
Change-Id: Ide83574dc957bc1df28e30a69079140050dfc35f
2018-10-04 10:14:28 -05:00
George Joseph
772d991a43 Merge "ast_coredumper: Remove .gdbinit file on exit" 2018-10-04 09:43:09 -05:00
George Joseph
5d3cc31bf8 Merge "CI: Use brace expansion instead of calling out to seq" 2018-10-04 09:41:48 -05:00
George Joseph
1630a87b59 Merge "CI: Look up configured kernel.core_pattern sysctl" 2018-10-04 08:54:24 -05:00
George Joseph
aec9708300 Merge "ast_coredumper: Don't use "declare -n"" 2018-10-04 07:27:18 -05:00
George Joseph
45eb9a28eb Merge "astobj2: Comment on OBJ_NOLOCK in ao2_container_clone." 2018-10-04 07:25:47 -05:00
George Joseph
f55e20ae83 Merge "http.c: Reload TLS even if http.conf hasn't changed" 2018-10-04 07:23:49 -05:00
Sean Bright
b2ed667712 ast_coredumper: Remove .gdbinit file on exit
Change-Id: I1297de78628773ca368e687c6f148bf74857cae9
2018-10-03 17:03:09 -05:00
Sean Bright
e19f27a667 CI: Look up configured kernel.core_pattern sysctl
Change-Id: I8246a0147df8d821fbbcabc1db1887104b8bedc4
2018-10-03 16:54:32 -05:00
Corey Farrell
42880fab50 jenkins: Fix cleanup command redirection.
Fix redirection to /dev/null of cleanup commands.  The '2' was being
interpreted as part of the command instead of part of the redirect.

Change-Id: I2e3a591b165e0288c4b82b9ef475fdfd5392a90a
2018-10-03 17:31:58 -04:00
George Joseph
a29cefe5b2 ast_coredumper: Don't use "declare -n"
Change-Id: I7ddfed4cd6549a0cd458e4d5cf9ac95d784de6cb
2018-10-03 15:30:22 -05:00
George Joseph
1a6e97bf23 Merge "CI: Use bindport instead of port in test http.conf" 2018-10-03 13:56:54 -05:00
George Joseph
967fffb569 Merge "core/frame: Fix ast_frdup() and ast_frisolate() for empty text frames" 2018-10-03 13:55:24 -05:00
Richard Mudgett
3601329c5a res_smdi.c: Fix module ref counting and inverted test.
I think this module is so screwed up that it doesn't work anymore.  Even
with these attempts to fix things it still won't gracefully shut down.
The module refs will not go to zero to allow unloading the module.

* Fix module ref counting dealing with the SMDI interface object.  There
were several off-nominal paths that unbalanced the module ref count.  Also
the destructor freed the ao2 object itself which is bad.  Made the
smdi_read thread not hold its own ref to the SMDI interface object so when
all refs go away the destructor will stop the listener thread.

* Fixed the smdi_load() return code of 1 concerning the number of
listeners.  The test was inverted.

Change-Id: Ic288db51b58e395d6a2fc3847f77176c16988784
2018-10-03 11:41:32 -05:00
Richard Mudgett
305d08f112 res_smdi.c: Made use defaults if the smdi.conf file does not exist.
This module is an optional dependency of a couple of other modules.  If it
declines to load, it then forces other modules that can optionally use
this module to also decline.

* Made use the default configuration if the config file does not exist and
simplified some of the logic.

Change-Id: Ib93191f1fe28c0dd9ebe3d84c7762b32f83c4eb9
2018-10-03 11:41:24 -05:00
Corey Farrell
932d0a40cf astobj2: Comment on OBJ_NOLOCK in ao2_container_clone.
The test for OBJ_NOLOCK looks wrong but it isn't.  Add comments to
prevent confusion.

Change-Id: I9662b82eb39e7627a1f1944fd18f967a2b987344
2018-10-03 11:03:48 -05:00
George Joseph
bc9a7c419c Merge "astobj2: Record lock usage to refs log when DEBUG_THREADS is enabled." 2018-10-03 10:17:27 -05:00
George Joseph
24dc6ee8ae Merge "loader: Fix result of module reload error." 2018-10-03 10:17:07 -05:00
George Joseph
910f5dbd44 Merge "core: Disable astobj2 locking for some common objects." 2018-10-03 10:16:20 -05:00
Sean Bright
f608b73a29 CI: Use brace expansion instead of calling out to seq
Also make the shebang in publishAsteriskDocs.sh the first line.

Change-Id: I3fdd6f22e652e4fb5b5fe85df46fa34eb6d0cf08
2018-10-03 09:11:46 -05:00
Sean Bright
9c9f060b3a CI: Use bindport instead of port in test http.conf
Change-Id: Ife9a6879da63a56e5b8348a2024eeed4e7b1615b
2018-10-03 09:00:54 -05:00
Sean Bright
286339aa34 http.c: Reload TLS even if http.conf hasn't changed
There is currently no way to indicate to Asterisk that TLS certificates
and/or keys have been updated other than by modifying http.conf or
restarting Asterisk.

There is already code in main/tcptls.c that determines if a reload is
actually necessary based on the hashes of the certicate and dependent
files, so this change merely gives us a way to request a reload without
explicitly modifying http.conf.

Change-Id: Ie795420dcc7eb3d91336820688a29adbcc321276
2018-10-03 08:35:12 -05:00
Joshua Colp
da8ff5017d Merge "Resolve warning about duplicate 'dialplan' CLI." 2018-10-03 08:31:20 -05:00
Richard Mudgett
a69a50b6ec res_statsd.c: Made use defaults if the statsd.conf file does not exist.
This module is an optional dependency of many modules.  If it declines to
load it then forces other modules that can optionally use this module to
also decline.

* Made use default configuration if there is a config error or the config
file does not exist.

Change-Id: If1068a582ec54ab7fb437265cb5370a97a825737
2018-10-02 17:12:32 -05:00
Corey Farrell
cacbe32534 core: Disable astobj2 locking for some common objects.
* ACO options
* Indications
* Module loader ref_debug object
* Media index info and variants
* xmldoc items

These allocation locations were identified using reflocks.py on the
master branch.

Change-Id: Ie999b9941760be3d1946cdb6e30cb85fd97504d8
2018-10-02 16:47:23 -04:00
George Joseph
83558fa580 Merge "loader: Improve error handling." 2018-10-02 14:24:09 -05:00
Corey Farrell
639718211a Resolve warning about duplicate 'dialplan' CLI.
Change-Id: I029db1b4a32ccfb38374d6fe944dc430866f4b30
2018-10-02 14:27:52 -04:00
Corey Farrell
b25a261aa5 loader: Fix result of module reload error.
When a module reload fails we never set AST_MODULE_RELOAD_ERROR.  This
caused reload failures to incorrectly report 'No module found'.

Change-Id: I5f3953e0f7d135e53ec797f24c97ee3f73f232e7
2018-10-02 14:12:58 -04:00
Corey Farrell
e4cf513f81 loader: Improve error handling.
* Display list of unavailable dependencies when they cause another
  module to fail loading.
* When a module declines to load find all modules which depend on it so
  they can be declined and listed together.
* Prevent retry of declined modules during startup.
* When a module fails to dlopen try loading it with RTLD_LAZY so we can
  attempt to display the list of missing dependencies.

These changes are meant to reduce logger spam that is caused when a
module has many dependencies and declines to load.  This also fixes some
error paths which failed to recognize required modules.

Module load/start errors are delayed until the end of loader startup.

Change-Id: I046052c71331c556c09d39f47a3b92975f3e1758
2018-10-02 13:18:12 -04:00
neutrino88
24cece660b core/frame: Fix ast_frdup() and ast_frisolate() for empty text frames
If a channel creates an AST_TEXT_FRAME with datalen == 0, the ast_frdup()
and ast_frisolate() functions could create a clone frame with an invalid
data.ptr which would cause a crash.  The proposed fix is to make sure that
for such empty text frames, ast_frdup() and ast_frisolate() return cloned
text frames with a valid data.ptr.

ASTERISK-28076
Reported by: Emmanuel BUU
Tested by: Emmanuel BUU

Change-Id: Ib882dd028598f13c4c233edbfdd7e54ad44a68e9
2018-10-02 11:25:25 -05:00
Joshua Colp
686ba0f869 Merge "Append CHANGES/UPGRADE.txt for module loader changes." 2018-10-02 08:47:48 -05:00
Joshua Colp
0944059d35 Merge "app_queue.c: Fix json ref leak" 2018-10-02 07:58:26 -05:00
Corey Farrell
13df745278 astobj2: Record lock usage to refs log when DEBUG_THREADS is enabled.
When DEBUG_THREADS is enabled we can know if the astobj2 mutex / rwlock
was ever used, so it can be recorded in the REF_DEBUG destructor entry.

Create contrib/scripts/reflocks.py to process locking used by
allocator.  This can be used to identify places where
AO2_ALLOC_OPT_LOCK_NOLOCK should be used to reduce memory usage.

Change-Id: I2e3cd23336a97df2692b545f548fd79b14b53bf4
2018-10-01 22:27:30 -04:00
George Joseph
5ca5483fcb Merge "app_page: Add dependency against app_confbridge." 2018-10-01 14:19:48 -05:00
Corey Farrell
52b530503f app_page: Add dependency against app_confbridge.
Change-Id: I1946509f518961d23fb21229d91676ee3e441921
2018-10-01 13:11:41 -04:00