Changeset

9048:c58be87e62d0

MUC: Return 'gone' error for destroyed rooms in other cases than attempted join Lock expiry -> Reset Admin wants to join -> Reset Still locked -> cancel, gone Don't return error in response to an error
author Kim Alvefur <zash@zash.se>
date Mon, 16 Jul 2018 12:19:19 +0200
parents 9047:ab3488ee3ca5
children 9049:5870a0a6d4b6
files plugins/muc/mod_muc.lua
diffstat 1 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/muc/mod_muc.lua	Sun Jul 15 22:50:05 2018 +0200
+++ b/plugins/muc/mod_muc.lua	Mon Jul 16 12:19:19 2018 +0200
@@ -399,20 +399,20 @@
 		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