mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Give sorcery instances a reference to their wizards.
On graceful shutdown, sorcery wizards are all killed off, but it is possible for sorcery instances to still have dangling pointers after this, possibly causing a crash. Giving the sorcery instances a reference to their wizards ensures that the wizard reference will remain valid for the lifetime of the sorcery instance. Review: https://reviewboard.asterisk.org/r/3401 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@411295 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -688,6 +688,8 @@ static void sorcery_object_wizard_destructor(void *obj)
|
||||
if (object_wizard->wizard) {
|
||||
ast_module_unref(object_wizard->wizard->module);
|
||||
}
|
||||
|
||||
ao2_cleanup(object_wizard->wizard);
|
||||
}
|
||||
|
||||
/*! \brief Internal function which creates an object type and adds a wizard mapping */
|
||||
@@ -728,7 +730,7 @@ static enum ast_sorcery_apply_result sorcery_apply_wizard_mapping(struct ast_sor
|
||||
|
||||
ast_module_ref(wizard->module);
|
||||
|
||||
object_wizard->wizard = wizard;
|
||||
object_wizard->wizard = ao2_bump(wizard);
|
||||
object_wizard->caching = caching;
|
||||
|
||||
ao2_link(object_type->wizards, object_wizard);
|
||||
|
Reference in New Issue
Block a user