diff options
Diffstat (limited to 'src/mod_muc_room.erl')
-rw-r--r-- | src/mod_muc_room.erl | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 40e9633b..d0384c23 100644 --- a/src/mod_muc_room.erl +++ b/src/mod_muc_room.erl @@ -3515,17 +3515,20 @@ set_opts([{Opt, Val} | Opts], StateData) -> StateData#state{config = (StateData#state.config)#config{allow_subscription = Val}}; subscribers -> - Subscribers = lists:foldl( - fun({JID, Nick, Nodes}, Acc) -> - BareJID = jid:remove_resource(JID), - ?DICT:store( - jid:tolower(BareJID), - #subscriber{jid = BareJID, - nick = Nick, - nodes = Nodes}, - Acc) - end, ?DICT:new(), Val), - StateData#state{subscribers = Subscribers}; + {Subscribers, Nicks} = + lists:foldl( + fun({JID, Nick, Nodes}, {SubAcc, NickAcc}) -> + BareJID = jid:remove_resource(JID), + {?DICT:store( + jid:tolower(BareJID), + #subscriber{jid = BareJID, + nick = Nick, + nodes = Nodes}, + SubAcc), + ?DICT:store(Nick, [jid:tolower(BareJID)], NickAcc)} + end, {?DICT:new(), ?DICT:new()}, Val), + StateData#state{subscribers = Subscribers, + subscriber_nicks = Nicks}; affiliations -> StateData#state{affiliations = (?DICT):from_list(Val)}; subject -> StateData#state{subject = Val}; |