]> granicus.if.org Git - ejabberd/commitdiff
prevent creating badxml when pubsub_state is not accessible
authorChristophe Romain <christophe.romain@process-one.net>
Wed, 8 Jul 2009 14:28:22 +0000 (14:28 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Wed, 8 Jul 2009 14:28:22 +0000 (14:28 +0000)
SVN Revision: 2360

src/mod_pubsub/node_hometree.erl

index 45c695ae22365a7fc94b7ca2cb0330b464e25650..764b511d4cc174491ab76788985f3bedb5516d27 100644 (file)
@@ -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.