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
parents 0fb44258d2cf
children 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 });