From: Christophe Romain Date: Wed, 4 Mar 2009 01:10:44 +0000 (+0000) Subject: Allow node creation without configure item X-Git-Tag: v2.0.5~20 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e4db030f4e98e103e96bf26777ac7f35f1a08d66;p=ejabberd Allow node creation without configure item SVN Revision: 1962 --- diff --git a/ChangeLog b/ChangeLog index 3fab5bf73..44fe628ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-03-04 Christophe Romain + + * src/mod_pubsub/mod_pubsub.erl: Allow node creation without configure + item + 2009-03-03 Christophe Romain * src/mod_pubsub/mod_pubsub.erl: Add roster subscriptions handling diff --git a/src/mod_pubsub/mod_pubsub.erl b/src/mod_pubsub/mod_pubsub.erl index d9096fb07..badd56f7d 100644 --- a/src/mod_pubsub/mod_pubsub.erl +++ b/src/mod_pubsub/mod_pubsub.erl @@ -920,30 +920,25 @@ iq_pubsub(Host, ServerHost, From, IQType, SubEl, _Lang, Access, Plugins) -> end, case {IQType, Name} of {set, "create"} -> - case Configuration of - [{xmlelement, "configure", _, Config}] -> - %% Get the type of the node - Type = case xml:get_attr_s("type", Attrs) of - [] -> hd(Plugins); - T -> T - end, - %% we use Plugins list matching because we do not want to allocate - %% atoms for non existing type, this prevent atom allocation overflow - case lists:member(Type, Plugins) of - false -> - {error, extended_error( - ?ERR_FEATURE_NOT_IMPLEMENTED, - unsupported, "create-nodes")}; - true -> - create_node(Host, ServerHost, Node, From, - Type, Access, Config) - end; - _ -> - %% this breaks backward compatibility! - %% can not create node without - %% but this is the new spec anyway - ?INFO_MSG("Node ~p ; invalid configuration: ~p", [Node, Configuration]), - {error, ?ERR_BAD_REQUEST} + Config = case Configuration of + [{xmlelement, "configure", _, C}] -> C; + _ -> [] + end, + %% Get the type of the node + Type = case xml:get_attr_s("type", Attrs) of + [] -> hd(Plugins); + T -> T + end, + %% we use Plugins list matching because we do not want to allocate + %% atoms for non existing type, this prevent atom allocation overflow + case lists:member(Type, Plugins) of + false -> + {error, extended_error( + ?ERR_FEATURE_NOT_IMPLEMENTED, + unsupported, "create-nodes")}; + true -> + create_node(Host, ServerHost, Node, From, + Type, Access, Config) end; {set, "publish"} -> case xml:remove_cdata(Els) of