mod_presence: Added handler for presence subscriptions and probes to local hosts.
authorWaqas Hussain <waqas20@gmail.com>
Fri, 29 Jan 2010 16:06:51 +0000 (21:06 +0500)
committerWaqas Hussain <waqas20@gmail.com>
Fri, 29 Jan 2010 16:06:51 +0000 (21:06 +0500)
plugins/mod_presence.lua

index 31d2d7b470d34cafcfc5140b9c118338f4f4b0ac..ec983fc26795fa19a26a46bc084ad35cb9d3457d 100644 (file)
@@ -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;