aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Romain <christophe.romain@process-one.net>2009-07-08 14:28:22 +0000
committerChristophe Romain <christophe.romain@process-one.net>2009-07-08 14:28:22 +0000
commitb31ca0cd3632ff0ad6801c20fbb722cccb136abb (patch)
treebc0ee1e97d3e75f6aab42b6e1acfaa7afcc4242c
parentIf directory /sbin is created, set permissions 755, not 750. (diff)
prevent creating badxml when pubsub_state is not accessible
SVN Revision: 2360
-rw-r--r--src/mod_pubsub/node_hometree.erl9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/mod_pubsub/node_hometree.erl b/src/mod_pubsub/node_hometree.erl
index 45c695ae2..764b511d4 100644
--- a/src/mod_pubsub/node_hometree.erl
+++ b/src/mod_pubsub/node_hometree.erl
@@ -723,8 +723,11 @@ set_subscriptions(NodeId, Owner, Subscriptions) ->
%% ```get_states(NodeId) ->
%% node_default:get_states(NodeId).'''</p>
get_states(NodeId) ->
- States = mnesia:match_object(
- #pubsub_state{stateid = {'_', NodeId}, _ = '_'}),
+ States = case catch mnesia:match_object(
+ #pubsub_state{stateid = {'_', NodeId}, _ = '_'}) of
+ List when is_list(List) -> List;
+ _ -> []
+ end,
{result, States}.
%% @spec (NodeId, JID) -> [State] | []
@@ -734,7 +737,7 @@ get_states(NodeId) ->
%% @doc <p>Returns a state (one state list), given its reference.</p>
get_state(NodeId, JID) ->
StateId = {JID, NodeId},
- case mnesia:read({pubsub_state, StateId}) of
+ case catch mnesia:read({pubsub_state, StateId}) of
[State] when is_record(State, pubsub_state) -> State;
_ -> #pubsub_state{stateid=StateId}
end.