aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2016-09-19 13:46:01 +0200
committerBadlop <badlop@process-one.net>2016-09-19 13:46:01 +0200
commit5bcfcf4c5e74638960894fa2e7b9e57dfdfb62f3 (patch)
tree4bb02c657b6dd068de42b72ad9c4f24ec1261198 /src
parentRevert "Fix getting of subscribed rooms: consider also temporary ones (#1242)" (diff)
When getting list of subscribed rooms, check all including temporary ones (#1242)
Diffstat (limited to 'src')
-rw-r--r--src/mod_muc.erl9
-rw-r--r--src/mod_muc_room.erl3
2 files changed, 7 insertions, 5 deletions
diff --git a/src/mod_muc.erl b/src/mod_muc.erl
index 4eb129a87..ad2be4cce 100644
--- a/src/mod_muc.erl
+++ b/src/mod_muc.erl
@@ -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;
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl
index 5aceb94c1..fc2aeebb6 100644
--- a/src/mod_muc_room.erl
+++ b/src/mod_muc_room.erl
@@ -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}.