From 4bf97ac79117224af094aad2fd7b8c0ed4b07785 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Tue, 10 Jul 2018 21:10:12 +0200 Subject: MUC: Flag rooms being destroyed (fixes #887) --- plugins/muc/mod_muc.lua | 1 + plugins/muc/muc.lib.lua | 1 + 2 files changed, 2 insertions(+) diff --git a/plugins/muc/mod_muc.lua b/plugins/muc/mod_muc.lua index a260823d..ad937bc4 100644 --- a/plugins/muc/mod_muc.lua +++ b/plugins/muc/mod_muc.lua @@ -156,6 +156,7 @@ end); -- Automatically destroy empty non-persistent rooms module:hook("muc-occupant-left",function(event) local room = event.room + if room.destroying then return end if not room:has_occupant() and not persistent.get(room) then -- empty, non-persistent room module:fire_event("muc-room-destroyed", { room = room }); end diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 58853e66..b61d72b9 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -848,6 +848,7 @@ function room_mt:destroy(newjid, reason, password) if reason then x:tag("reason"):text(reason):up(); end if password then x:tag("password"):text(password):up(); end x:up(); + self.destroying = reason or true; self:clear(x); module:fire_event("muc-room-destroyed", { room = self }); return true; -- cgit v1.2.3