Comparison

plugins/muc/muc.lib.lua @ 3593:58a4af582eb3

MUC: Only send status code 110 (entering non-anonymous room) to the occupant themselves, not to other occupants.
author Waqas Hussain <waqas20@gmail.com>
date Wed, 10 Nov 2010 06:27:35 +0500
parent 3592:3adac5780c5a
child 3611:d58da6bb8a77
comparison
equal deleted inserted replaced
3592:3adac5780c5a 3593:58a4af582eb3
447 self._occupants[to].sessions[from] = get_filtered_presence(stanza); 447 self._occupants[to].sessions[from] = get_filtered_presence(stanza);
448 end 448 end
449 self._jid_nick[from] = to; 449 self._jid_nick[from] = to;
450 self:send_occupant_list(from); 450 self:send_occupant_list(from);
451 pr.attr.from = to; 451 pr.attr.from = to;
452 pr:tag("x", {xmlns='http://jabber.org/protocol/muc#user'})
453 :tag("item", {affiliation=affiliation or "none", role=role or "none"}):up();
452 if not is_merge then 454 if not is_merge then
453 self:broadcast_presence(pr, from); 455 self:broadcast_except_nick(pr, to);
454 else
455 pr.attr.to = from;
456 self:_route_stanza(pr:tag("x", {xmlns='http://jabber.org/protocol/muc#user'})
457 :tag("item", {affiliation=affiliation or "none", role=role or "none"}):up()
458 :tag("status", {code='110'}));
459 end 456 end
457 pr:tag("status", {code='110'});
458 if self._data.whois == 'anyone' then
459 pr:tag("status", {code='100'}):up();
460 end
461 pr.attr.to = from;
462 self:_route_stanza(pr);
460 self:send_history(from, stanza); 463 self:send_history(from, stanza);
461 elseif not affiliation then -- registration required for entering members-only room 464 elseif not affiliation then -- registration required for entering members-only room
462 local reply = st.error_reply(stanza, "auth", "registration-required"):up(); 465 local reply = st.error_reply(stanza, "auth", "registration-required"):up();
463 reply.tags[1].attr.code = "407"; 466 reply.tags[1].attr.code = "407";
464 origin.send(reply:tag("x", {xmlns = "http://jabber.org/protocol/muc"})); 467 origin.send(reply:tag("x", {xmlns = "http://jabber.org/protocol/muc"}));
1019 else 1022 else
1020 item.attr.jid = from_occupant.jid; 1023 item.attr.jid = from_occupant.jid;
1021 end 1024 end
1022 end 1025 end
1023 end 1026 end
1024 if self._data.whois == 'anyone' then
1025 muc_child:tag('status', { code = '100' }):up();
1026 end
1027 end 1027 end
1028 self:route_stanza(stanza); 1028 self:route_stanza(stanza);
1029 if muc_child then 1029 if muc_child then
1030 for _, item in pairs(muc_child.tags) do 1030 for _, item in pairs(muc_child.tags) do
1031 if item.name == "item" then 1031 if item.name == "item" then