mod_pep: Added function get_caps_hash_from_presence
authorWaqas Hussain <waqas20@gmail.com>
Fri, 26 Jun 2009 18:36:12 +0000 (23:36 +0500)
committerWaqas Hussain <waqas20@gmail.com>
Fri, 26 Jun 2009 18:36:12 +0000 (23:36 +0500)
plugins/mod_pep.lua

index e4a1767b96e9908ba0a38416bb766e368b9e9981..95c18eec21dc24f7315dd35225cac2dfd7139ba0 100644 (file)
@@ -48,6 +48,23 @@ local function publish(session, node, item)
        end
 end
 
+local function get_caps_hash_from_presence(stanza, current)
+       if not stanza.attr.type then
+               for _, child in pairs(stanza.tags) do
+                       if child.name == "c" and child.attr.xmlns == "http://jabber.org/protocol/caps" then
+                               local attr = child.attr;
+                               if attr.hash then -- new caps
+                                       if attr.hash == 'sha-1' and attr.node and attr.ver then return attr.ver, attr.node.."#"..attr.ver; end
+                               else -- legacy caps
+                                       if attr.node and attr.ver then return attr.node.."#"..attr.ver.."#"..(attr.ext or ""), attr.node.."#"..attr.ver; end
+                               end
+                               return; -- bad caps format
+                       end
+               end
+               return current; -- no caps, could mean caps optimization, so return current
+       end
+end
+
 module:hook("presence/bare", function(event)
        -- inbound presence to bare JID recieved
        local origin, stanza = event.origin, event.stanza;