Software /
code /
prosody
Comparison
plugins/mod_mam/mod_mam.lua @ 10773:3e1046b39484
mod_mam: Store only incoming errors
Unclear if clients normally ever send error messages, but there may be
locally generated bounces sent on behalf of local sessions.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 26 Apr 2020 14:28:00 +0200 |
parent | 10752:930f38939f1e |
child | 10800:62794e065e33 |
comparison
equal
deleted
inserted
replaced
10772:31e702c5f475 | 10773:3e1046b39484 |
---|---|
261 end); | 261 end); |
262 end | 262 end |
263 return stanza; | 263 return stanza; |
264 end | 264 end |
265 | 265 |
266 local function should_store(stanza) --> boolean, reason: string | 266 local function should_store(stanza, c2s) --> boolean, reason: string |
267 local st_type = stanza.attr.type or "normal"; | 267 local st_type = stanza.attr.type or "normal"; |
268 -- FIXME pass direction of stanza and use that along with bare/full JID addressing | 268 -- FIXME pass direction of stanza and use that along with bare/full JID addressing |
269 -- for more accurate MUC / type=groupchat check | 269 -- for more accurate MUC / type=groupchat check |
270 | 270 |
271 if st_type == "headline" then | 271 if st_type == "headline" then |
272 -- Headline messages are ephemeral by definition | 272 -- Headline messages are ephemeral by definition |
273 return false, "headline"; | 273 return false, "headline"; |
274 end | 274 end |
275 if st_type == "error" then | 275 if st_type == "error" and not c2s then |
276 -- Store delivery failure notifications so you know if your own messages were not delivered | |
276 return true, "bounce"; | 277 return true, "bounce"; |
277 end | 278 end |
278 if st_type == "groupchat" then | 279 if st_type == "groupchat" then |
279 -- MUC messages always go to the full JID, usually archived by the MUC | 280 -- MUC messages always go to the full JID, usually archived by the MUC |
280 return false, "groupchat"; | 281 return false, "groupchat"; |
332 local with = jid_bare(c2s and orig_to or orig_from); | 333 local with = jid_bare(c2s and orig_to or orig_from); |
333 | 334 |
334 -- Filter out <stanza-id> that claim to be from us | 335 -- Filter out <stanza-id> that claim to be from us |
335 event.stanza = strip_stanza_id(stanza, store_user); | 336 event.stanza = strip_stanza_id(stanza, store_user); |
336 | 337 |
337 local should, why = should_store(stanza); | 338 local should, why = should_store(stanza, c2s); |
338 if not should then | 339 if not should then |
339 log("debug", "Not archiving stanza: %s (%s)", stanza:top_tag(), why); | 340 log("debug", "Not archiving stanza: %s (%s)", stanza:top_tag(), why); |
340 return; | 341 return; |
341 end | 342 end |
342 | 343 |