From a9eb525db3ff365bf20242fe2eddc96680ad17f4 Mon Sep 17 00:00:00 2001
From: Waqas Hussain <waqas20@gmail.com>
Date: Wed, 10 Nov 2010 06:27:35 +0500
Subject: MUC: Only send status code 110 (entering non-anonymous room) to the
 occupant themselves, not to other occupants.

---
 plugins/muc/muc.lib.lua | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

(limited to 'plugins/muc')

diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua
index b7b23311..a1774117 100644
--- a/plugins/muc/muc.lib.lua
+++ b/plugins/muc/muc.lib.lua
@@ -449,14 +449,17 @@ function room_mt:handle_to_occupant(origin, stanza) -- PM, vCards, etc
 						self._jid_nick[from] = to;
 						self:send_occupant_list(from);
 						pr.attr.from = to;
+						pr:tag("x", {xmlns='http://jabber.org/protocol/muc#user'})
+							:tag("item", {affiliation=affiliation or "none", role=role or "none"}):up();
 						if not is_merge then
-							self:broadcast_presence(pr, from);
-						else
-							pr.attr.to = from;
-							self:_route_stanza(pr:tag("x", {xmlns='http://jabber.org/protocol/muc#user'})
-								:tag("item", {affiliation=affiliation or "none", role=role or "none"}):up()
-								:tag("status", {code='110'}));
+							self:broadcast_except_nick(pr, to);
+						end
+						pr:tag("status", {code='110'});
+						if self._data.whois == 'anyone' then
+							pr:tag("status", {code='100'}):up();
 						end
+						pr.attr.to = from;
+						self:_route_stanza(pr);
 						self:send_history(from, stanza);
 					elseif not affiliation then -- registration required for entering members-only room
 						local reply = st.error_reply(stanza, "auth", "registration-required"):up();
@@ -1021,9 +1024,6 @@ function room_mt:_route_stanza(stanza)
 				end
 			end
 		end
-		if self._data.whois == 'anyone' then
-			muc_child:tag('status', { code = '100' }):up();
-		end
 	end
 	self:route_stanza(stanza);
 	if muc_child then
-- 
cgit v1.2.3