aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2009-02-11 18:09:41 +0500
committerWaqas Hussain <waqas20@gmail.com>2009-02-11 18:09:41 +0500
commit2f24ab95fe28c13d85faf1dbfa16b0c3a90b46b1 (patch)
tree999813a47346e5f4a683971e4a048dff13e1a5e8
parentc11c83d1b4762c251fdf69d3cbd9ed025f0073fd (diff)
downloadprosody-2f24ab95fe28c13d85faf1dbfa16b0c3a90b46b1.tar.gz
prosody-2f24ab95fe28c13d85faf1dbfa16b0c3a90b46b1.zip
Fixed directed presence handling to work correctly for components
-rw-r--r--core/presencemanager.lua2
-rw-r--r--core/stanza_router.lua9
2 files changed, 6 insertions, 5 deletions
diff --git a/core/presencemanager.lua b/core/presencemanager.lua
index 3a216d7c..8fdf3612 100644
--- a/core/presencemanager.lua
+++ b/core/presencemanager.lua
@@ -97,7 +97,7 @@ function handle_normal_presence(origin, stanza, core_route_stanza)
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
diff --git a/core/stanza_router.lua b/core/stanza_router.lua
index 3c905c6d..52a18eed 100644
--- a/core/stanza_router.lua
+++ b/core/stanza_router.lua
@@ -105,6 +105,11 @@ function core_process_stanza(origin, stanza)
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 @@ function core_process_stanza(origin, stanza)
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