summaryrefslogtreecommitdiff
path: root/main/sorcery.c
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2015-02-04 00:59:14 +0000
committerJoshua Colp <jcolp@digium.com>2015-02-04 00:59:14 +0000
commit03ce56d6c5e35fa170c9af2c4aaa0fa05e58be4e (patch)
tree345bc3d0c8632af5f95c653f4ba10068211350f1 /main/sorcery.c
parent14a57782a6685a4fb432e18527974188b3f76ecf (diff)
sorcery: Don't try to load object types which haven't been defined.
The act of defining wizards for an object type in sorcery.conf will create a minimal object type. This can cause a problem when a module has multiple sorcery instances (which all get the wizards from sorcery.conf applied) but the sorcery instances do not all contain full information about the object types. Upon loading errors will occur stating that the objects can not be created. This is confusing and is actually perfectly fine. This change makes it so that only object types which have been fully defined will be loaded. ASTERISK-24748 #close Reported by: Joshua Colp ........ Merged revisions 431538 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431539 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/sorcery.c')
-rw-r--r--main/sorcery.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/main/sorcery.c b/main/sorcery.c
index 50e5e4756..17d262595 100644
--- a/main/sorcery.c
+++ b/main/sorcery.c
@@ -1248,6 +1248,10 @@ static int sorcery_object_load(void *obj, void *arg, int flags)
struct ast_sorcery_object_type *type = obj;
struct sorcery_load_details *details = arg;
+ if (!type->type.item_alloc) {
+ return 0;
+ }
+
details->type = type->name;
if (details->reload && !sorcery_reloadable(details->sorcery, details->type)) {