Mercurial > prosody-modules
changeset 4188:4611999fd8d3
mod_muc_batched_probe: don't rely on mt_room:respond_to_probe method
That method assumes it's responding to a `<presence>` stanza, which breaks for
the bached probe use-case.
author | JC Brand <jc@opkode.com> |
---|---|
date | Mon, 12 Oct 2020 13:21:16 +0200 (2020-10-12) |
parents | e2db07017332 |
children | 22e7b3d6fcae e06258fc6cf1 |
files | mod_muc_batched_probe/mod_muc_batched_probe.lua |
diffstat | 1 files changed, 19 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_muc_batched_probe/mod_muc_batched_probe.lua Sat Oct 10 16:54:06 2020 +0200 +++ b/mod_muc_batched_probe/mod_muc_batched_probe.lua Mon Oct 12 13:21:16 2020 +0200 @@ -22,12 +22,29 @@ return; end; + local origin = event.origin; local room = get_room_from_jid(stanza.attr.to); + local probing_occupant = room:get_occupant_by_real_jid(stanza.attr.from); + if probing_occupant == nil then + origin.send(st.error_reply(stanza, "cancel", "not-acceptable", "You are not currently connected to this chat", room.jid)); + return true; + end + for item in query:children() do local probed_jid = item.attr.jid; - room:respond_to_probe(stanza.attr.from, probed_jid); + local probed_occupant = room:get_occupant_by_nick(probed_jid); + if probed_occupant == nil then + local pr = room:build_unavailable_presence(probed_jid, stanza.attr.from); + if pr then + room:route_stanza(pr); + end + return; + end + local x = st.stanza("x", {xmlns = "http://jabber.org/protocol/muc#user"}); + room:publicise_occupant_status(probed_occupant, x, nil, nil, nil, nil, false, probing_occupant); + end - event.origin.send(st.reply(stanza)); + origin.send(st.reply(stanza)); return true; end