]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Allow shutdown to unload modules that register bucket scheme's or codec's.
authorCorey Farrell <git@cfware.com>
Sat, 21 Feb 2015 02:55:26 +0000 (02:55 +0000)
committerCorey Farrell <git@cfware.com>
Sat, 21 Feb 2015 02:55:26 +0000 (02:55 +0000)
* 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/

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@432058 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/loader.c

index c4d438a3d9b5f6bf9bd0e5e8f952714f9c5343a9..b183b4f3662c26a863746aa10071955ea329d514 100644 (file)
@@ -1378,10 +1378,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)