]> granicus.if.org Git - ejabberd/commitdiff
minor bugfix, thanks to brian Cully (EJAB-1089)
authorChristophe Romain <christophe.romain@process-one.net>
Tue, 27 Oct 2009 14:26:22 +0000 (14:26 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Tue, 27 Oct 2009 14:26:22 +0000 (14:26 +0000)
SVN Revision: 2713

src/mod_pubsub/nodetree_dag.erl

index d7094e3e05e8569c79cc5ab7be91b13634267618..7074cabc4a11f20361a65566626f26286a6b7157 100644 (file)
@@ -154,17 +154,21 @@ get_parentnodes_tree(Host, NodeID, _From) ->
 get_subnodes(Host, NodeID, _From) ->
     get_subnodes(Host, NodeID).
 
+get_subnodes(Host, <<>>) ->
+    get_subnodes_helper(Host, <<>>);
 get_subnodes(Host, NodeID) ->
     case find_node(Host, NodeID) of
        false -> {error, ?ERR_ITEM_NOT_FOUND};
-       _ ->
-           Q = qlc:q([Node || #pubsub_node{nodeid  = {NHost, _},
-                                           parents = Parents} = Node <- mnesia:table(pubsub_node),
-                              Host == NHost,
-                              lists:member(NodeID, Parents)]),
-           qlc:e(Q)
+       _ -> get_subnodes_helper(Host, NodeID)
     end.
 
+get_subnodes_helper(Host, NodeID) ->
+    Q = qlc:q([Node || #pubsub_node{nodeid  = {NHost, _},
+                                    parents = Parents} = Node <- mnesia:table(pubsub_node),
+                       Host == NHost,
+                       lists:member(NodeID, Parents)]),
+    qlc:e(Q).
+
 get_subnodes_tree(Host, NodeID, From) ->
     Pred = fun (NID, #pubsub_node{parents = Parents}) ->
                   lists:member(NID, Parents)
@@ -224,6 +228,8 @@ validate_parentage(_Key, _Owners, []) ->
     true;
 validate_parentage(Key, Owners, [[] | T]) ->
     validate_parentage(Key, Owners, T);
+validate_parentage(Key, Owners, [<<>> | T]) ->
+    validate_parentage(Key, Owners, T);
 validate_parentage(Key, Owners, [ParentID | T]) ->
     case find_node(Key, ParentID) of
        false -> {error, ?ERR_ITEM_NOT_FOUND};