plugins/muc/mod_muc.lua
changeset 6179 e488a90195bc
parent 6141 bf6de8ef66c2
child 6205 49dd381666f3
equal deleted inserted replaced
6143:82b3a2155a55 6179:e488a90195bc
   226 		room._affiliations = oldroom._affiliations;
   226 		room._affiliations = oldroom._affiliations;
   227 	end
   227 	end
   228 	hosts[module:get_host()].muc = { rooms = rooms };
   228 	hosts[module:get_host()].muc = { rooms = rooms };
   229 end
   229 end
   230 
   230 
   231 function shutdown_room(room, stanza)
       
   232 	for nick, occupant in pairs(room._occupants) do
       
   233 		stanza.attr.from = nick;
       
   234 		for jid in pairs(occupant.sessions) do
       
   235 			stanza.attr.to = jid;
       
   236 			room:_route_stanza(stanza);
       
   237 			room._jid_nick[jid] = nil;
       
   238 		end
       
   239 		room._occupants[nick] = nil;
       
   240 	end
       
   241 end
       
   242 function shutdown_component()
   231 function shutdown_component()
   243 	if not saved then
   232 	if not saved then
   244 		local stanza = st.presence({type = "unavailable"})
   233 		local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"})
   245 			:tag("x", {xmlns = "http://jabber.org/protocol/muc#user"})
       
   246 				:tag("item", { affiliation='none', role='none' }):up()
       
   247 				:tag("status", { code = "332"}):up();
   234 				:tag("status", { code = "332"}):up();
   248 		for roomjid, room in pairs(rooms) do
   235 		for roomjid, room in pairs(rooms) do
   249 			shutdown_room(room, stanza);
   236 			room:clear(x);
   250 		end
   237 		end
   251 		shutdown_room(host_room, stanza);
   238 		host_room:clear(x);
   252 	end
   239 	end
   253 end
   240 end
   254 module.unload = shutdown_component;
   241 module.unload = shutdown_component;
   255 module:hook_global("server-stopping", shutdown_component);
   242 module:hook_global("server-stopping", shutdown_component);
   256 
   243