Software /
code /
prosody
Changeset
780:4417ab6ccc20
Fixed directed presence handling to work correctly for components
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Wed, 11 Feb 2009 18:09:41 +0500 |
parents | 779:ec0eadf4e9ff |
children | 781:191b9f0e5485 |
files | core/presencemanager.lua core/stanza_router.lua |
diffstat | 2 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/core/presencemanager.lua Wed Feb 11 18:07:20 2009 +0500 +++ b/core/presencemanager.lua Wed Feb 11 18:09:41 2009 +0500 @@ -97,7 +97,7 @@ if stanza.attr.type == "unavailable" then origin.presence = nil; if origin.directed then - for _, jid in ipairs(origin.directed) do + for jid in pairs(origin.directed) do stanza.attr.to = jid; core_route_stanza(origin, stanza); end
--- a/core/stanza_router.lua Wed Feb 11 18:07:20 2009 +0500 +++ b/core/stanza_router.lua Wed Feb 11 18:09:41 2009 +0500 @@ -105,6 +105,11 @@ return; -- FIXME what should we do here? does this work with subdomains? end end + if origin.type == "c2s" and stanza.name == "presence" and to ~= nil and not(origin.roster[to_bare] and (origin.roster[to_bare].subscription == "both" or origin.roster[to_bare].subscription == "from")) then -- directed presence + origin.directed = origin.directed or {}; + origin.directed[to] = true; + --t_insert(origin.directed, to); -- FIXME does it make more sense to add to_bare rather than to? + end if not to then core_handle_stanza(origin, stanza); elseif hosts[to] and hosts[to].type == "local" then -- directed at a local server @@ -122,10 +127,6 @@ elseif origin.type ~= "c2s" and stanza.name == "iq" and not resource then -- directed at bare JID core_handle_stanza(origin, stanza); else - if origin.type == "c2s" and stanza.name == "presence" and to ~= nil and not(origin.roster[to_bare] and (origin.roster[to_bare].subscription == "both" or origin.roster[to_bare].subscription == "from")) then - origin.directed = origin.directed or {}; - t_insert(origin.directed, to); -- FIXME does it make more sense to add to_bare rather than to? - end core_route_stanza(origin, stanza); end else