Software /
code /
prosody
Comparison
plugins/muc/muc.lib.lua @ 6117:d7ade0b00ec5
plugins/muc/muc.lib: In `_route_stanza` access occupant data less often
author | daurnimator <quae@daurnimator.com> |
---|---|
date | Wed, 19 Mar 2014 14:35:17 -0400 |
parent | 6116:9147e566fde0 |
child | 6118:aae3d6daa50d |
comparison
equal
deleted
inserted
replaced
6116:9147e566fde0 | 6117:d7ade0b00ec5 |
---|---|
1208 return true; | 1208 return true; |
1209 end | 1209 end |
1210 | 1210 |
1211 function room_mt:_route_stanza(stanza) | 1211 function room_mt:_route_stanza(stanza) |
1212 local muc_child; | 1212 local muc_child; |
1213 local to_occupant = self._occupants[self._jid_nick[stanza.attr.to]]; | |
1214 local from_occupant = self._occupants[stanza.attr.from]; | |
1215 if stanza.name == "presence" then | 1213 if stanza.name == "presence" then |
1214 local to_occupant = self._occupants[self._jid_nick[stanza.attr.to]]; | |
1215 local from_occupant = self._occupants[stanza.attr.from]; | |
1216 if to_occupant and from_occupant then | 1216 if to_occupant and from_occupant then |
1217 if self._data.whois == 'anyone' then | 1217 if self._data.whois == 'anyone' then |
1218 muc_child = stanza:get_child("x", "http://jabber.org/protocol/muc#user"); | 1218 muc_child = stanza:get_child("x", "http://jabber.org/protocol/muc#user"); |
1219 else | 1219 else |
1220 if to_occupant.role == "moderator" or jid_bare(to_occupant.jid) == jid_bare(from_occupant.jid) then | 1220 if to_occupant.role == "moderator" or jid_bare(to_occupant.jid) == jid_bare(from_occupant.jid) then |
1221 muc_child = stanza:get_child("x", "http://jabber.org/protocol/muc#user"); | 1221 muc_child = stanza:get_child("x", "http://jabber.org/protocol/muc#user"); |
1222 end | 1222 end |
1223 end | 1223 end |
1224 end | 1224 end |
1225 end | 1225 if muc_child then |
1226 if muc_child then | 1226 for item in muc_child:childtags("item") do |
1227 for item in muc_child:childtags("item") do | 1227 if from_occupant == to_occupant then |
1228 if from_occupant == to_occupant then | 1228 item.attr.jid = stanza.attr.to; |
1229 item.attr.jid = stanza.attr.to; | 1229 else |
1230 else | 1230 item.attr.jid = from_occupant.jid; |
1231 item.attr.jid = from_occupant.jid; | 1231 end |
1232 end | 1232 end |
1233 end | 1233 end |
1234 end | 1234 end |
1235 self:route_stanza(stanza); | 1235 self:route_stanza(stanza); |
1236 if muc_child then | 1236 if muc_child then |