]> granicus.if.org Git - ejabberd/commitdiff
Temporary room not destroyed when the last participant is expulsed (EJAB-520)
authorBadlop <badlop@process-one.net>
Mon, 5 May 2014 11:50:52 +0000 (13:50 +0200)
committerBadlop <badlop@process-one.net>
Mon, 5 May 2014 11:50:52 +0000 (13:50 +0200)
src/mod_muc_room.erl

index 8126012cbc7904320555ae071c82f17ff43eb3cd..3842fde40a1c77bca653e0d8f8a9a9e480de275d 100644 (file)
@@ -245,7 +245,7 @@ normal_state({route, From, <<"">>,
                      NewState = expulse_participant(Packet, From, StateData,
                                                     translate:translate(Lang,
                                                                         ErrorText)),
-                     {next_state, normal_state, NewState};
+                     close_room_if_temporary_and_empty(NewState);
                  _ -> {next_state, normal_state, StateData}
                end;
            <<"chat">> ->
@@ -1126,14 +1126,17 @@ process_presence(From, Nick,
                       end;
                   _ -> StateData
                 end,
+    close_room_if_temporary_and_empty(StateData1).
+
+close_room_if_temporary_and_empty(StateData1) ->
     case not (StateData1#state.config)#config.persistent
           andalso (?DICT):to_list(StateData1#state.users) == []
        of
       true ->
          ?INFO_MSG("Destroyed MUC room ~s because it's temporary "
                    "and empty",
-                   [jlib:jid_to_string(StateData#state.jid)]),
-         add_to_log(room_existence, destroyed, StateData),
+                   [jlib:jid_to_string(StateData1#state.jid)]),
+         add_to_log(room_existence, destroyed, StateData1),
          {stop, normal, StateData1};
       _ -> {next_state, normal_state, StateData1}
     end.