--- a/mod_csi_battery_saver/mod_csi_battery_saver.lua Mon Apr 29 01:31:40 2024 +0200
+++ b/mod_csi_battery_saver/mod_csi_battery_saver.lua Mon Apr 29 02:00:34 2024 +0200
@@ -85,6 +85,17 @@
end
local function is_important(stanza, session)
+ -- some special handlings
+ if stanza == " " then -- whitespace keepalive
+ return true;
+ elseif type(stanza) == "string" then -- raw data
+ return true;
+ elseif not st.is_stanza(stanza) then -- this should probably never happen
+ return true;
+ end
+ if stanza.attr.xmlns ~= nil then -- nonzas (stream errors, stream management etc.)
+ return true;
+ end
local st_name = stanza and stanza.name or nil;
if not st_name then return true; end -- nonzas are always important
if st_name == "presence" then
@@ -104,6 +115,9 @@
local st_type = stanza.attr.type;
+ -- errors are always important
+ if st_type == "error" then return true; end;
+
-- headline message are always not important, with some exceptions
if st_type == "headline" then
-- allow headline pushes of mds updates (XEP-0490)
@@ -111,6 +125,10 @@
return false
end
+ -- mediated muc invites
+ if stanza:find("{http://jabber.org/protocol/muc#user}x/invite") then return true; end;
+ if stanza:get_child("x", "jabber:x:conference") then return true; end;
+
-- chat markers (XEP-0333) are important, too, because some clients use them to update their notifications
if stanza:child_with_ns("urn:xmpp:chat-markers:0") then return true; end;