Mercurial > prosody-modules
comparison mod_smacks_noerror/mod_smacks_noerror.lua @ 3937:e7dc25e54d02
mod_smacks_noerror: This module is superseded by mod_smacks and mod_nooffline_noerror
author | tmolitor <thilo@eightysoft.de> |
---|---|
date | Sun, 08 Mar 2020 19:52:33 +0100 |
parents | f35b2b76df6d |
children |
comparison
equal
deleted
inserted
replaced
3936:a3693e0d26b8 | 3937:e7dc25e54d02 |
---|---|
1 local t_insert = table.insert; | 1 -- this module is deprecated, log an error and load the superseding modules instead |
2 module:depends"smacks" | |
3 module:depends"nooffline_noerror" | |
2 | 4 |
3 local mod_smacks = module:depends"smacks" | 5 module:log("error", "mod_smacks_noerror is deprecated! Just use mod_smacks and load mod_nooffline_noerror if you explicitly disabled offline storage (mod_offline)"); |
4 | |
5 -- ignore offline messages and don't return any error (the message will be already in MAM at this point) | |
6 -- this is *only* triggered if mod_offline is *not* loaded and completely ignored otherwise | |
7 module:hook("message/offline/handle", function(event) | |
8 event.origin.log("debug", "Ignoring offline message (mod_offline seems to be *not* loaded)..."); | |
9 return true; | |
10 end, -100); | |
11 | |
12 local function discard_unacked_messages(session) | |
13 local queue = session.outgoing_stanza_queue; | |
14 local replacement_queue = {}; | |
15 session.outgoing_stanza_queue = replacement_queue; | |
16 | |
17 for _, stanza in ipairs(queue) do | |
18 if stanza.name == "message" and stanza.attr.xmlns == nil and | |
19 ( stanza.attr.type == "chat" or ( stanza.attr.type or "normal" ) == "normal" ) then | |
20 -- do nothing here for normal messages and don't send out "message delivery errors", | |
21 -- because messages are already in MAM at this point (no need to frighten users) | |
22 else | |
23 t_insert(replacement_queue, stanza); | |
24 end | |
25 end | |
26 end | |
27 | |
28 local handle_unacked_stanzas = mod_smacks.handle_unacked_stanzas; | |
29 | |
30 mod_smacks.handle_unacked_stanzas = function (session) | |
31 -- Only deal with authenticated (c2s) sessions | |
32 if session.username then | |
33 discard_unacked_messages(session) | |
34 end | |
35 return handle_unacked_stanzas(session); | |
36 end | |
37 | |
38 function module.unload() | |
39 mod_smacks.handle_unacked_stanzas = handle_unacked_stanzas; | |
40 end |