diff options
author | Corey Farrell <git@cfware.com> | 2015-02-21 02:58:19 +0000 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2015-02-21 02:58:19 +0000 |
commit | e66b874f5db1a5cfe3ede6e0cb72f1a545744d75 (patch) | |
tree | 47dbdb22b1df191d5ac76255962691f7e15c4898 /main/loader.c | |
parent | bb71672a47f7df49d1fab7161deafd7d815be06c (diff) |
Allow shutdown to unload modules that register bucket scheme's or codec's.
* Change __ast_module_shutdown_ref to be NULL safe (11+).
* Allow modules that call ast_bucket_scheme_register or ast_codec_register
to be unloaded during graceful shutdown only (13+ only).
ASTERISK-24796 #close
Reported by: Corey Farrell
Review: https://reviewboard.asterisk.org/r/4428/
........
Merged revisions 432058 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 432059 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432060 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/loader.c')
-rw-r--r-- | main/loader.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/main/loader.c b/main/loader.c index 5d644ed6b..b14914acb 100644 --- a/main/loader.c +++ b/main/loader.c @@ -1484,10 +1484,12 @@ struct ast_module *__ast_module_ref(struct ast_module *mod, const char *file, in void __ast_module_shutdown_ref(struct ast_module *mod, const char *file, int line, const char *func) { - if (!mod->flags.keepuntilshutdown) { - __ast_module_ref(mod, file, line, func); - mod->flags.keepuntilshutdown = 1; + if (!mod || mod->flags.keepuntilshutdown) { + return; } + + __ast_module_ref(mod, file, line, func); + mod->flags.keepuntilshutdown = 1; } void __ast_module_unref(struct ast_module *mod, const char *file, int line, const char *func) |