Mercurial > prosody-hg
comparison plugins/muc/muc.lib.lua @ 6250:454ef19e7925
plugins/muc/muc: Better check for live sessions
| author | daurnimator <quae@daurnimator.com> |
|---|---|
| date | Mon, 19 May 2014 13:40:54 -0400 |
| parents | 2420e308f64a |
| children | 10b27981ea3f |
comparison
equal
deleted
inserted
replaced
| 6249:2420e308f64a | 6250:454ef19e7925 |
|---|---|
| 98 if old_occupant then | 98 if old_occupant then |
| 99 for real_jid in pairs(old_occupant.sessions) do | 99 for real_jid in pairs(old_occupant.sessions) do |
| 100 self._jid_nick[real_jid] = nil; | 100 self._jid_nick[real_jid] = nil; |
| 101 end | 101 end |
| 102 end | 102 end |
| 103 if occupant.role ~= nil and next(occupant.sessions) then | 103 |
| 104 local has_live_session = false | |
| 105 if occupant.role ~= nil then | |
| 104 for real_jid, presence in occupant:each_session() do | 106 for real_jid, presence in occupant:each_session() do |
| 105 self._jid_nick[real_jid] = occupant.nick; | 107 if presence.attr.type == nil then |
| 106 end | 108 has_live_session = true |
| 107 else | 109 self._jid_nick[real_jid] = occupant.nick; |
| 110 end | |
| 111 end | |
| 112 if not has_live_session then | |
| 113 -- Has no live sessions left; they have left the room. | |
| 114 occupant.role = nil | |
| 115 end | |
| 116 end | |
| 117 if not has_live_session then | |
| 108 occupant = nil | 118 occupant = nil |
| 109 end | 119 end |
| 110 self._occupants[id] = occupant | 120 self._occupants[id] = occupant |
| 111 end | 121 end |
| 112 | 122 |
