aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2010-01-29 21:06:51 +0500
committerWaqas Hussain <waqas20@gmail.com>2010-01-29 21:06:51 +0500
commit0e7b83863adad24bdc4ba627f034d2f6d329cf33 (patch)
tree310fc079c0750ed3da1902961f79f09661ecd308 /plugins
parentb7d45c17f2c325f55ef9cb27b1896d4b7ee8d324 (diff)
downloadprosody-0e7b83863adad24bdc4ba627f034d2f6d329cf33.tar.gz
prosody-0e7b83863adad24bdc4ba627f034d2f6d329cf33.zip
mod_presence: Added handler for presence subscriptions and probes to local hosts.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/mod_presence.lua21
1 files changed, 14 insertions, 7 deletions
diff --git a/plugins/mod_presence.lua b/plugins/mod_presence.lua
index 31d2d7b4..ec983fc2 100644
--- a/plugins/mod_presence.lua
+++ b/plugins/mod_presence.lua
@@ -309,13 +309,6 @@ module:hook("presence/bare", function(data)
end
return true;
end);
-module:hook("presence/host", function (data)
- local stanza = data.stanza;
- local reply = st.reply(stanza);
- reply.attr.type = "unsubscribed";
- handle_inbound_presence_subscriptions_and_probes(data.origin, reply, jid_bare(stanza.attr.to), jid_bare(stanza.attr.from), core_route_stanza);
- return true;
-end);
module:hook("presence/full", function(data)
-- inbound presence to full JID recieved
local origin, stanza = data.origin, data.stanza;
@@ -333,6 +326,20 @@ module:hook("presence/full", function(data)
end -- resource not online, discard
return true;
end);
+module:hook("presence/host", function(data)
+ -- inbound presence to the host
+ local origin, stanza = data.origin, data.stanza;
+
+ local from_bare = jid_bare(stanza.attr.from);
+ local t = stanza.attr.type;
+ if t == "probe" then
+ core_route_stanza(hosts[module.host], st.presence({ from = module.host, to = from_bare, id = stanza.attr.id }));
+ elseif t == "subscribe" then
+ core_route_stanza(hosts[module.host], st.presence({ from = module.host, to = from_bare, id = stanza.attr.id, type = "subscribed" }));
+ core_route_stanza(hosts[module.host], st.presence({ from = module.host, to = from_bare, id = stanza.attr.id }));
+ end
+ return true;
+end);
module:hook("resource-unbind", function(event)
local session, err = event.session, event.error;