diff options
author | Waqas Hussain <waqas20@gmail.com> | 2011-11-21 19:59:38 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2011-11-21 19:59:38 +0500 |
commit | 2311895df93e3b5ad63fa75fd66c17056bd2bca4 (patch) | |
tree | 408db5a5b39df7393c978a644a54b52ec9e01453 /plugins | |
parent | 0f23c0b4910410c37dbbd8303e62695083cd0e53 (diff) | |
download | prosody-2311895df93e3b5ad63fa75fd66c17056bd2bca4.tar.gz prosody-2311895df93e3b5ad63fa75fd66c17056bd2bca4.zip |
MUC: Fix a possible stack overflow (when a local component joins a room, then disconnects, an unavailble-error presence cycle can occur).
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/muc/muc.lib.lua | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/plugins/muc/muc.lib.lua b/plugins/muc/muc.lib.lua index 8e05bbb4..731f9e37 100644 --- a/plugins/muc/muc.lib.lua +++ b/plugins/muc/muc.lib.lua @@ -358,6 +358,7 @@ function room_mt:handle_to_occupant(origin, stanza) -- PM, vCards, etc elseif type == "unavailable" then -- unavailable if current_nick then log("debug", "%s leaving %s", current_nick, room); + self._jid_nick[from] = nil; local occupant = self._occupants[current_nick]; local new_jid = next(occupant.sessions); if new_jid == from then new_jid = next(occupant.sessions, new_jid); end @@ -382,7 +383,6 @@ function room_mt:handle_to_occupant(origin, stanza) -- PM, vCards, etc self:broadcast_presence(pr, from); self._occupants[current_nick] = nil; end - self._jid_nick[from] = nil; end elseif not type then -- available if current_nick then |