summaryrefslogtreecommitdiff
path: root/funcs
diff options
context:
space:
mode:
authorCorey Farrell <git@cfware.com>2017-11-01 20:46:11 -0400
committerCorey Farrell <git@cfware.com>2017-11-01 20:46:11 -0400
commit79f111e1f317fffd3222b70c31a0fac65c40234e (patch)
treeaa1f51880780200956e46e1be7757be30a423963 /funcs
parent64f1294ef2c799cda27ee83258fc5567a274bb34 (diff)
Prevent unload of modules which implement an Optional API.
Once an Optional API module is loaded it should stay loaded. Unloading an optional API module runs the risk of a crash if something else is using it. This patch causes all optional API providers to tell the module loader not to unload except at shutdown. ASTERISK-27389 Change-Id: Ia07786fe655681aec49cc8d3d96e06483b11f5e6
Diffstat (limited to 'funcs')
-rw-r--r--funcs/func_periodic_hook.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/funcs/func_periodic_hook.c b/funcs/func_periodic_hook.c
index f8e79b326..0ab3d6b8b 100644
--- a/funcs/func_periodic_hook.c
+++ b/funcs/func_periodic_hook.c
@@ -488,6 +488,11 @@ static int load_module(void)
res = ast_custom_function_register_escalating(&hook_function, AST_CFE_BOTH);
+ if (!res) {
+ /* For Optional API. */
+ ast_module_shutdown_ref(AST_MODULE_SELF);
+ }
+
return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;
}