Software /
code /
prosody-modules
Comparison
mod_cache_c2s_caps/mod_cache_c2s_caps.lua @ 3080:b003d72d9ce6
mod_cache_c2s_caps: Switch to origin.log to provide better debug to admins.
author | Emmanuel Gil Peyrot <linkmauve@linkmauve.fr> |
---|---|
date | Fri, 01 Jun 2018 18:33:53 +0200 |
parent | 2901:0fb44258d2cf |
child | 3111:7a3ac037e57f |
comparison
equal
deleted
inserted
replaced
3079:2a918a8c47db | 3080:b003d72d9ce6 |
---|---|
23 end | 23 end |
24 iq_node_map[from..id] = nil; | 24 iq_node_map[from..id] = nil; |
25 in_flight_iqs[from..node_string] = nil; | 25 in_flight_iqs[from..node_string] = nil; |
26 | 26 |
27 if node_string ~= node_query then | 27 if node_string ~= node_query then |
28 module:log("debug", "Wrong node for our disco#info query, expected %s, received %s", node_string, node_query); | 28 origin.log("debug", "Wrong node for our disco#info query, expected %s, received %s", node_string, node_query); |
29 return; | 29 return; |
30 end | 30 end |
31 | 31 |
32 local node, ver = node_query:match("([^#]+)#([^#]+)"); | 32 local node, ver = node_query:match("([^#]+)#([^#]+)"); |
33 local hash = calculate_hash(query) | 33 local hash = calculate_hash(query) |
34 if ver ~= hash then | 34 if ver ~= hash then |
35 module:log("debug", "Wrong hash for disco#info: %s ~= %s", ver, hash); | 35 origin.log("debug", "Wrong hash for disco#info: %s ~= %s", ver, hash); |
36 end | 36 end |
37 | 37 |
38 origin.caps_cache = query; | 38 origin.caps_cache = query; |
39 module:log("info", "Stored caps %s", ver); | 39 origin.log("info", "Stored caps %s", ver); |
40 module:fire_event("c2s-capabilities-changed", { origin = origin }); | 40 module:fire_event("c2s-capabilities-changed", { origin = origin }); |
41 return true; | 41 return true; |
42 end | 42 end |
43 | 43 |
44 local function iq_error_handler(event) | 44 local function iq_error_handler(event) |
55 return; | 55 return; |
56 end | 56 end |
57 | 57 |
58 local caps = stanza:get_child("c", "http://jabber.org/protocol/caps"); | 58 local caps = stanza:get_child("c", "http://jabber.org/protocol/caps"); |
59 if caps == nil then | 59 if caps == nil then |
60 module:log("debug", "Presence without caps received, skipping"); | 60 origin.log("debug", "Presence without caps received, skipping"); |
61 return; | 61 return; |
62 end | 62 end |
63 | 63 |
64 local hash = caps.attr.hash; | 64 local hash = caps.attr.hash; |
65 local node = caps.attr.node; | 65 local node = caps.attr.node; |
66 local ver = caps.attr.ver; | 66 local ver = caps.attr.ver; |
67 if not hash or not node or not ver then | 67 if not hash or not node or not ver then |
68 return; | 68 return; |
69 end | 69 end |
70 if hash ~= "sha-1" then | 70 if hash ~= "sha-1" then |
71 module:log("warn", "Non-SHA-1 caps received: %s", hash); | 71 origin.log("warn", "Non-SHA-1 caps received: %s", hash); |
72 return; | 72 return; |
73 end | 73 end |
74 | 74 |
75 local node_query = node.."#"..ver; | 75 local node_query = node.."#"..ver; |
76 if (origin.caps_cache and origin.caps_cache.attr.node == node_query) or in_flight_iqs[from..node_query] ~= nil then | 76 if (origin.caps_cache and origin.caps_cache.attr.node == node_query) or in_flight_iqs[from..node_query] ~= nil then |
77 module:log("debug", "Already requested these caps, skipping"); | 77 origin.log("debug", "Already requested these caps, skipping"); |
78 return; | 78 return; |
79 end | 79 end |
80 | 80 |
81 module:log("debug", "Received presence with SHA-1 caps %s, querying disco#info", node_query); | 81 origin.log("debug", "Received presence with SHA-1 caps %s, querying disco#info", node_query); |
82 | 82 |
83 local id = uuid_gen(); | 83 local id = uuid_gen(); |
84 iq_node_map[from..id] = node_query | 84 iq_node_map[from..id] = node_query |
85 local iq = st_iq({ type = "get", from = module.host, to = from, id = id }) | 85 local iq = st_iq({ type = "get", from = module.host, to = from, id = id }) |
86 :tag("query", { xmlns = "http://jabber.org/protocol/disco#info", node = node_query }); | 86 :tag("query", { xmlns = "http://jabber.org/protocol/disco#info", node = node_query }); |