From: Badlop Date: Tue, 31 Jan 2017 18:18:19 +0000 (+0100) Subject: Set subscribers nicks when recreating room (thanks to Girdhar Sojitra)(#1495) X-Git-Tag: 17.03-beta~59 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a31154c0356f430dcd7b3c7371a864d8ec035cf8;p=ejabberd Set subscribers nicks when recreating room (thanks to Girdhar Sojitra)(#1495) --- diff --git a/src/mod_muc_room.erl b/src/mod_muc_room.erl index 40e9633b1..d0384c23e 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};