# HG changeset patch # User Matthew Wild # Date 1735399413 0 # Node ID dc2cce03554d40fd02ec21ad7d765faf6744cc0b # Parent c0cb43817b7ceec01d2ef43b970bef10c2179e80 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. diff -r c0cb43817b7c -r dc2cce03554d mod_pubsub_subscription/mod_pubsub_subscription.lua --- 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 })