diff options
-rw-r--r-- | plugins/muc/mod_muc.lua | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua index 49bb12d1..c4b69f41 100644 --- a/plugins/muc/mod_muc.lua +++ b/plugins/muc/mod_muc.lua @@ -399,20 +399,20 @@ for event_name, method in pairs { local room = get_room_from_jid(room_jid); if room and room._data.destroyed then - if stanza.attr.type == nil and stanza.name == "presence" then - if is_admin(stanza.attr.from) or room._data.locked < os.time() then - -- Allow the room to be recreated by admin or after time has passed - delete_room(room); - room = nil; - else + if room._data.locked < os.time() or (is_admin(stanza.attr.from) and stanza.name == "presence" and stanza.attr.type == nil) then + -- Allow the room to be recreated by admin or after time has passed + delete_room(room); + room = nil; + else + if stanza.attr.type ~= "error" then local reply = st.error_reply(stanza, "cancel", "gone", room._data.reason) if room._data.newjid then local uri = "xmpp:"..room._data.newjid.."?join"; reply:get_child("error"):child_with_name("gone"):text(uri); end event.origin.send(reply); - return true; end + return true; end end |