]> granicus.if.org Git - ejabberd/commitdiff
Don't read pubsub options when plugin does not use them
authorChristophe Romain <christophe.romain@process-one.net>
Wed, 16 Dec 2015 11:56:06 +0000 (12:56 +0100)
committerChristophe Romain <christophe.romain@process-one.net>
Wed, 16 Dec 2015 11:56:06 +0000 (12:56 +0100)
This also revert commit 6052f7b

src/mod_pubsub.erl
src/node_flat.erl

index c0b613d619f5d791f2a86b747de1f43ec47f1f00..a3494067ec3dae3f9f459de856d9127ca1ffef22 100644 (file)
@@ -3424,12 +3424,19 @@ get_node_subs_by_depth(Host, Node, From) ->
     [{Depth, [{N, get_node_subs(Host, N)} || N <- Nodes]} || {Depth, Nodes} <- ParentTree].
 
 get_node_subs(Host, #pubsub_node{type = Type, id = Nidx}) ->
+    WithOptions =  lists:member(<<"subscription-options">>, plugin_features(Host, Type)),
     case node_call(Host, Type, get_node_subscriptions, [Nidx]) of
-       {result, Subs} -> get_options_for_subs(Host, Nidx, Subs);
+       {result, Subs} -> get_options_for_subs(Host, Nidx, Subs, WithOptions);
        Other -> Other
     end.
 
-get_options_for_subs(Host, Nidx, Subs) ->
+get_options_for_subs(_Host, _Nidx, Subs, false) ->
+    lists:foldl(fun({JID, subscribed, SubID}, Acc) ->
+                   [{JID, SubID, []} | Acc];
+                  (_, Acc) ->
+                   Acc
+       end, [], Subs);
+get_options_for_subs(Host, Nidx, Subs, true) ->
     SubModule = subscription_plugin(Host),
     lists:foldl(fun({JID, subscribed, SubID}, Acc) ->
                case SubModule:get_subscription(JID, Nidx, SubID) of
index 8acfd48c5b88b8a049c2801a31125f215e8786d6..e35dd6e9b278e7c259383cc7ec553717fe383779 100644 (file)
@@ -50,7 +50,7 @@
     path_to_node/1, can_fetch_item/2, is_subscribed/1]).
 
 init(_Host, _ServerHost, _Opts) ->
-    pubsub_subscription:init(),
+    %pubsub_subscription:init(),
     mnesia:create_table(pubsub_state,
        [{disc_copies, [node()]},
            {type, ordered_set},