aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2009-07-06 08:05:33 +0000
committerChristophe Romain <christophe.romain@process-one.net>2009-07-06 08:05:33 +0000
commitfc55db403e6d090dfda0734ec9108cb02fe3ddde (patch)
tree99d75af4e8cfaa843e069bfb26fc8b7c46524802
parentmake virtual nodes having default options (diff)
XEP-0248 bugfix (EJAB-963) (Thanks to Brian Cully)
SVN Revision: 2353
-rw-r--r--src/mod_pubsub/nodetree_dag.erl12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/mod_pubsub/nodetree_dag.erl b/src/mod_pubsub/nodetree_dag.erl
index 091bc52ad..7ddcaf18a 100644
--- a/src/mod_pubsub/nodetree_dag.erl
+++ b/src/mod_pubsub/nodetree_dag.erl
@@ -166,12 +166,13 @@ get_subnodes(Host, NodeID) ->
qlc:e(Q)
end.
-get_subnodes_tree(Host, NodeID, _From) ->
+get_subnodes_tree(Host, NodeID, From) ->
Pred = fun (NID, #pubsub_node{parents = Parents}) ->
lists:member(NID, Parents)
end,
- Tr = fun (#pubsub_node{nodeid = {_, N}}) -> N end,
- traversal_helper(Pred, Tr, Host, [NodeID]).
+ Tr = fun (#pubsub_node{nodeid = {_, N}}) -> [N] end,
+ traversal_helper(Pred, Tr, 1, Host, [NodeID],
+ [{0, [get_node(Host, NodeID, From)]}]).
%%====================================================================
%% Internal functions
@@ -232,8 +233,9 @@ validate_parentage(Key, Owners, [ParentID | T]) ->
MutualOwners = [O || O <- Owners, PO <- POwners,
O == PO],
case {MutualOwners, NodeType} of
- {[], _} -> {error, ?ERR_NOT_ALLOWED};
- {_, collection} -> validate_parentage(Key, Owners, T)
+ {[], _} -> {error, ?ERR_FORBIDDEN};
+ {_, collection} -> validate_parentage(Key, Owners, T);
+ {_, _} -> {error, ?ERR_NOT_ALLOWED}
end
end.