# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1498431831 -7200
# Node ID a6574fdf873477f98ca6608aba477da6f390908d
# Parent  45be94611593d2c6dc3fc4cbcbd4573541f6b27f
MUC: Only send status code 307 to the user being kicked, not everyone (fixes #939)

diff -r 45be94611593 -r a6574fdf8734 plugins/muc/muc.lib.lua
--- a/plugins/muc/muc.lib.lua	Tue Jun 13 20:14:06 2017 +0200
+++ b/plugins/muc/muc.lib.lua	Mon Jun 26 01:03:51 2017 +0200
@@ -349,8 +349,11 @@
 	occupant:set_session(real_jid, st.presence({type="unavailable"})
 		:tag('status'):text(error_message));
 	self:save_occupant(occupant);
-	local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user";})
-		:tag("status", {code = "307"})
+	local x = {
+		base = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user";});
+		self = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user";})
+			:tag("status", {code = "307"});
+	};
 	self:publicise_occupant_status(occupant, x);
 	if occupant.jid == real_jid then -- Was last session
 		module:fire_event("muc-occupant-left", {room = self; nick = occupant.nick; occupant = occupant;});
@@ -1298,7 +1301,11 @@
 
 	local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"});
 	if not role then
-		x:tag("status", {code = "307"}):up();
+		x = {
+			base = x;
+			self = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"})
+				:tag("status", {code = "307"}):up();
+		};
 	end
 	occupant.role = role;
 	self:save_occupant(occupant);