Software /
code /
prosody-modules
Changeset
6114:dc2cce03554d
mod_pubsub_subscription: Match stanzas with fixed prefix only
This should help filter out any other unrelated iq stanzas which may be
exchanged with the pubsub service.
For example, a separate module was requesting the item list from a subscribed
node, but this module was incorrectly attempting to handle the result.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 28 Dec 2024 15:23:33 +0000 |
parents | 6113:c0cb43817b7c |
children | 6115:b644832a8290 |
files | mod_pubsub_subscription/mod_pubsub_subscription.lua |
diffstat | 1 files changed, 4 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_pubsub_subscription/mod_pubsub_subscription.lua Mon Dec 23 14:09:56 2024 +0100 +++ b/mod_pubsub_subscription/mod_pubsub_subscription.lua Sat Dec 28 15:23:33 2024 +0000 @@ -1,3 +1,4 @@ +local id = require "util.id"; local st = require "util.stanza"; local uuid = require "util.uuid"; local mt = require "util.multitable"; @@ -37,7 +38,7 @@ end item._id = uuid.generate(); - local iq_id = uuid.generate(); + local iq_id = "pubsub-sub-"..id.short(); pending_subscription:set(iq_id, item._id); active_subscriptions:set(item.service, item.node, item.from, item._id, item); @@ -67,6 +68,7 @@ local service = stanza.attr.from; if not stanza.attr.id then return end -- shouldn't be possible + if not stanza.attr.id:match("^pubsub%-sub%-") then return end local subscribed_node = pending_subscription:get(stanza.attr.id); pending_subscription:set(stanza.attr.id, nil); @@ -118,7 +120,7 @@ local node_subs = active_subscriptions:get(item.service, item.node, item.from); if node_subs and next(node_subs) then return end - local iq_id = uuid.generate(); + local iq_id = "pubsub-sub-"..id.short(); pending_unsubscription:set(iq_id, item._id); module:send(st.iq({ type = "set", id = iq_id, from = item.from, to = item.service })