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
This commit is contained in:
Corey Farrell
2017-11-01 20:46:11 -04:00
parent a7c00707a5
commit 73a5e9f0e9
7 changed files with 26 additions and 0 deletions

View File

@@ -490,6 +490,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_info->self);
}
return res ? AST_MODULE_LOAD_DECLINE : AST_MODULE_LOAD_SUCCESS;
}