comparison mod_cloud_notify/mod_cloud_notify.lua @ 5057:c728e82265a7

mod_cloud_notify: Improve logging for various error cases
author Matthew Wild <mwild1@gmail.com>
date Sat, 24 Sep 2022 08:28:07 +0100
parents 00e8cc6860cb
children fd6cb4365438
comparison
equal deleted inserted replaced
5056:2583bd7eb5d1 5057:c728e82265a7
77 function handle_push_error(event) 77 function handle_push_error(event)
78 local stanza = event.stanza; 78 local stanza = event.stanza;
79 local error_type, condition, error_text = stanza:get_error(); 79 local error_type, condition, error_text = stanza:get_error();
80 local node = id2node[stanza.attr.id]; 80 local node = id2node[stanza.attr.id];
81 local identifier = id2identifier[stanza.attr.id]; 81 local identifier = id2identifier[stanza.attr.id];
82 if node == nil then return false; end -- unknown stanza? Ignore for now! 82 if node == nil then
83 module:log("warn", "Received push error with unrecognised id: %s", stanza.attr.id);
84 return false; -- unknown stanza? Ignore for now!
85 end
83 local from = stanza.attr.from; 86 local from = stanza.attr.from;
84 local user_push_services = push_store:get(node); 87 local user_push_services = push_store:get(node);
85 local changed = false; 88 local found, changed = false, false;
86 89
87 for push_identifier, _ in pairs(user_push_services) do 90 for push_identifier, _ in pairs(user_push_services) do
88 if push_identifier == identifier then 91 if push_identifier == identifier then
92 found = true;
89 if user_push_services[push_identifier] and user_push_services[push_identifier].jid == from and error_type ~= "wait" then 93 if user_push_services[push_identifier] and user_push_services[push_identifier].jid == from and error_type ~= "wait" then
90 push_errors[push_identifier] = push_errors[push_identifier] + 1; 94 push_errors[push_identifier] = push_errors[push_identifier] + 1;
91 module:log("info", "Got error <%s:%s:%s> for identifier '%s': " 95 module:log("info", "Got error <%s:%s:%s> for identifier '%s': "
92 .."error count for this identifier is now at %s", error_type, condition, error_text or "", push_identifier, 96 .."error count for this identifier is now at %s", error_type, condition, error_text or "", push_identifier,
93 tostring(push_errors[push_identifier])); 97 tostring(push_errors[push_identifier]));
120 id2identifier[stanza.attr.id] = nil; 124 id2identifier[stanza.attr.id] = nil;
121 end 125 end
122 elseif user_push_services[push_identifier] and user_push_services[push_identifier].jid == from and error_type == "wait" then 126 elseif user_push_services[push_identifier] and user_push_services[push_identifier].jid == from and error_type == "wait" then
123 module:log("debug", "Got error <%s:%s:%s> for identifier '%s': " 127 module:log("debug", "Got error <%s:%s:%s> for identifier '%s': "
124 .."NOT increasing error count for this identifier", error_type, condition, error_text or "", push_identifier); 128 .."NOT increasing error count for this identifier", error_type, condition, error_text or "", push_identifier);
129 else
130 module:log("debug", "Unhandled push error <%s:%s:%s> from %s for identifier '%s'",
131 error_type, condition, error_text or "", from, push_identifier
132 );
125 end 133 end
126 end 134 end
127 end 135 end
128 if changed then 136 if changed then
129 push_store:flush_to_disk(node); 137 push_store:flush_to_disk(node);
138 elseif not found then
139 module:log("warn", "Unable to find matching registration for push error <%s:%s:%s> from %s", error_type, condition, error_text or "", from);
130 end 140 end
131 return true; 141 return true;
132 end 142 end
133 143
134 function handle_push_success(event) 144 function handle_push_success(event)