]> granicus.if.org Git - ejabberd/commitdiff
When getting list of subscribed rooms, check all including temporary ones (#1242)
authorBadlop <badlop@process-one.net>
Mon, 19 Sep 2016 11:46:01 +0000 (13:46 +0200)
committerBadlop <badlop@process-one.net>
Mon, 19 Sep 2016 11:46:01 +0000 (13:46 +0200)
src/mod_muc.erl
src/mod_muc_room.erl

index 4eb129a8785e4e0d14ea8c80f19c9e9d3c564075..ad2be4cce48e3626ad5ab4e9bbdcc8541208beed 100644 (file)
@@ -718,13 +718,12 @@ get_vh_rooms(Host, #rsm_in{max=M, direction=Direction, id=I, index=Index})->
                     index = NewIndex}}
     end.
 
-get_subscribed_rooms(ServerHost, Host, From) ->
-    Rooms = get_rooms(ServerHost, Host),
+get_subscribed_rooms(_ServerHost, Host1, From) ->
+    Rooms = get_vh_rooms(Host1),
     BareFrom = jid:remove_resource(From),
     lists:flatmap(
-      fun(#muc_room{name_host = {Name, _}, opts = Opts}) ->
-             Subscribers = proplists:get_value(subscribers, Opts, []),
-             case lists:keymember(BareFrom, 1, Subscribers) of
+      fun(#muc_online_room{name_host = {Name, Host}, pid = Pid}) ->
+             case gen_fsm:sync_send_all_state_event(Pid, {is_subscribed, BareFrom}) of
                  true -> [jid:make(Name, Host, <<>>)];
                  false -> []
              end;
index 5aceb94c17c31d7a8d9763aa44fcb8f32697ae30..fc2aeebb688e4f128adfcf2c059459d1e7775427 100644 (file)
@@ -800,6 +800,9 @@ handle_sync_event({muc_unsubscribe, From}, _From, StateName, StateData) ->
        {error, Err} ->
            {reply, {error, get_error_text(Err)}, StateName, StateData}
     end;
+handle_sync_event({is_subscribed, From}, _From, StateName, StateData) ->
+    IsSubs = ?DICT:is_key(jid:split(From), StateData#state.subscribers),
+    {reply, IsSubs, StateName, StateData};
 handle_sync_event(_Event, _From, StateName,
                  StateData) ->
     Reply = ok, {reply, Reply, StateName, StateData}.