Author: coreyfarrell Date: Fri Feb 20 20:58:19 2015 New Revision: 432060 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=432060 Log: 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 Modified: trunk/ (props changed) trunk/main/bucket.c trunk/main/codec.c trunk/main/loader.c Propchange: trunk/ ------------------------------------------------------------------------------ Binary property 'branch-13-merged' - no diff available. Modified: trunk/main/bucket.c URL: http://svnview.digium.com/svn/asterisk/trunk/main/bucket.c?view=diff&rev=432060&r1=432059&r2=432060 ============================================================================== --- trunk/main/bucket.c (original) +++ trunk/main/bucket.c Fri Feb 20 20:58:19 2015 @@ -282,7 +282,7 @@ ast_verb(2, "Registered bucket scheme '%s'\n", name); - ast_module_ref(module); + ast_module_shutdown_ref(module); return 0; } Modified: trunk/main/codec.c URL: http://svnview.digium.com/svn/asterisk/trunk/main/codec.c?view=diff&rev=432060&r1=432059&r2=432060 ============================================================================== --- trunk/main/codec.c (original) +++ trunk/main/codec.c Fri Feb 20 20:58:19 2015 @@ -296,8 +296,8 @@ ao2_link_flags(codecs, codec_new, OBJ_NOLOCK); - /* Once registered a codec can not be unregistered, and the module must persist */ - ast_module_ref(mod); + /* Once registered a codec can not be unregistered, and the module must persist until shutdown */ + ast_module_shutdown_ref(mod); ast_verb(2, "Registered '%s' codec '%s' at sample rate '%u' with id '%u'\n", ast_codec_media_type2str(codec->type), codec->name, codec->sample_rate, codec_new->id); Modified: trunk/main/loader.c URL: http://svnview.digium.com/svn/asterisk/trunk/main/loader.c?view=diff&rev=432060&r1=432059&r2=432060 ============================================================================== --- trunk/main/loader.c (original) +++ trunk/main/loader.c Fri Feb 20 20:58:19 2015 @@ -1484,10 +1484,12 @@ 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) -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits