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
........
Merged revisions 411295 from http://svn.asterisk.org/svn/asterisk/branches/12
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411296
65c4cc65-6c06-0410-ace0-
fbb531ad65f3
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 */
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);