]> granicus.if.org Git - ejabberd/commitdiff
Set subscribers nicks when recreating room (thanks to Girdhar Sojitra)(#1495)
authorBadlop <badlop@process-one.net>
Tue, 31 Jan 2017 18:18:19 +0000 (19:18 +0100)
committerBadlop <badlop@process-one.net>
Tue, 31 Jan 2017 18:18:39 +0000 (19:18 +0100)
src/mod_muc_room.erl

index 40e9633b1e3cfea6dd1987c70c81488de26c188c..d0384c23e6d3a8a4a98256e91555545f5771c352 100644 (file)
@@ -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};