Mercurial > prosody-modules
changeset 6305:1c0e9486ba23
mod_pubsub_subscription: Fix sometimes not subscribing at startup, improve logs
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 31 Jul 2025 15:12:51 +0100 |
| parents | 6e2458b69e33 |
| children | 093c47ee2041 |
| files | mod_pubsub_subscription/mod_pubsub_subscription.lua |
| diffstat | 1 files changed, 19 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_pubsub_subscription/mod_pubsub_subscription.lua Wed Jul 30 14:16:55 2025 +0100 +++ b/mod_pubsub_subscription/mod_pubsub_subscription.lua Thu Jul 31 15:12:51 2025 +0100 @@ -31,9 +31,9 @@ assert(item.node, "pubsub subscription item MUST have a 'node' field."); item.from = item.from or module.host; - local already_subscibed = false; + local already_subscribed = false; for _ in active_subscriptions:iter(item.service, item.node, item.from, nil) do -- luacheck: ignore 512 - already_subscibed = true; + already_subscribed = true; break end @@ -42,10 +42,22 @@ pending_subscription:set(iq_id, item._id); active_subscriptions:set(item.service, item.node, item.from, item._id, item); - if not already_subscibed then - module:send(st.iq({ type = "set", id = iq_id, from = item.from, to = item.service }) - :tag("pubsub", { xmlns = xmlns_pubsub }) - :tag("subscribe", { jid = item.from, node = item.node })); + if not already_subscribed then + local function send_subscribe() + module:log("debug", "%s is subscribing to %s:%s", item.from, item.service, item.node); + module:send(st.iq({ type = "set", id = iq_id, from = item.from, to = item.service }) + :tag("pubsub", { xmlns = xmlns_pubsub }) + :tag("subscribe", { jid = item.from, node = item.node })); + end + + if prosody.start_time then + send_subscribe(); + else + module:log("debug", "%s will subscribe to %s:%s after server startup", item.from, item.service, item.node); + module:hook_global("server-started", send_subscribe); + end + else + module:log("debug", "%s is already subscribed to %s:%s", item.from, item.service, item.node); end end @@ -65,7 +77,7 @@ end); end -function handle_iq(context, event) +function handle_iq(context, event) --luacheck: ignore 212/context local stanza = event.stanza; local service = stanza.attr.from;
