equal
deleted
inserted
replaced
47 end |
47 end |
48 end |
48 end |
49 end |
49 end |
50 |
50 |
51 local function get_caps_hash_from_presence(stanza, current) |
51 local function get_caps_hash_from_presence(stanza, current) |
52 if not stanza.attr.type then |
52 local t = stanza.attr.type; |
|
53 if not t then |
53 for _, child in pairs(stanza.tags) do |
54 for _, child in pairs(stanza.tags) do |
54 if child.name == "c" and child.attr.xmlns == "http://jabber.org/protocol/caps" then |
55 if child.name == "c" and child.attr.xmlns == "http://jabber.org/protocol/caps" then |
55 local attr = child.attr; |
56 local attr = child.attr; |
56 if attr.hash then -- new caps |
57 if attr.hash then -- new caps |
57 if attr.hash == 'sha-1' and attr.node and attr.ver then return attr.ver, attr.node.."#"..attr.ver; end |
58 if attr.hash == 'sha-1' and attr.node and attr.ver then return attr.ver, attr.node.."#"..attr.ver; end |
59 if attr.node and attr.ver then return attr.node.."#"..attr.ver.."#"..(attr.ext or ""), attr.node.."#"..attr.ver; end |
60 if attr.node and attr.ver then return attr.node.."#"..attr.ver.."#"..(attr.ext or ""), attr.node.."#"..attr.ver; end |
60 end |
61 end |
61 return; -- bad caps format |
62 return; -- bad caps format |
62 end |
63 end |
63 end |
64 end |
64 return current; -- no caps, could mean caps optimization, so return current |
65 elseif t == "unavailable" or t == "error" then |
|
66 return; |
65 end |
67 end |
|
68 return current; -- no caps, could mean caps optimization, so return current |
66 end |
69 end |
67 |
70 |
68 module:hook("presence/bare", function(event) |
71 module:hook("presence/bare", function(event) |
69 -- inbound presence to bare JID recieved |
72 -- inbound presence to bare JID recieved |
70 local origin, stanza = event.origin, event.stanza; |
73 local origin, stanza = event.origin, event.stanza; |