From 04ebdeb8f998b9b8a29867e155833950c9d1400a Mon Sep 17 00:00:00 2001 From: Sonny Piers Date: Sat, 28 Dec 2024 18:06:11 +0100 Subject: [PATCH] done --- packages/client/README.md | 2 +- packages/client/example.js | 2 +- packages/component/README.md | 2 +- packages/component/example.js | 2 +- packages/sasl2/index.js | 6 ++++-- packages/stream-features/route.js | 3 +++ 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/client/README.md b/packages/client/README.md index aeab2f58..18804533 100644 --- a/packages/client/README.md +++ b/packages/client/README.md @@ -55,7 +55,7 @@ xmpp.on("offline", () => { console.log("offline"); }); -xmpp.on("stanza", async (stanza) => { +xmpp.once("stanza", async (stanza) => { if (stanza.is("message")) { await xmpp.send(xml("presence", { type: "unavailable" })); await xmpp.stop(); diff --git a/packages/client/example.js b/packages/client/example.js index 6bab1abc..9bd5f21d 100644 --- a/packages/client/example.js +++ b/packages/client/example.js @@ -24,7 +24,7 @@ xmpp.on("offline", () => { console.log("offline"); }); -xmpp.on("stanza", async (stanza) => { +xmpp.once("stanza", async (stanza) => { if (stanza.is("message")) { await xmpp.send(xml("presence", { type: "unavailable" })); await xmpp.stop(); diff --git a/packages/component/README.md b/packages/component/README.md index 0a9c41e4..4a1fbb93 100644 --- a/packages/component/README.md +++ b/packages/component/README.md @@ -34,7 +34,7 @@ xmpp.on("offline", () => { console.log("offline"); }); -xmpp.on("stanza", async (stanza) => { +xmpp.once("stanza", async (stanza) => { if (stanza.is("message")) { await xmpp.stop(); } diff --git a/packages/component/example.js b/packages/component/example.js index ce5847b5..2c8bec4a 100644 --- a/packages/component/example.js +++ b/packages/component/example.js @@ -18,7 +18,7 @@ xmpp.on("offline", () => { console.log("offline"); }); -xmpp.on("stanza", async (stanza) => { +xmpp.once("stanza", async (stanza) => { if (stanza.is("message")) { await xmpp.stop(); } diff --git a/packages/sasl2/index.js b/packages/sasl2/index.js index c46b2664..de8da9a7 100644 --- a/packages/sasl2/index.js +++ b/packages/sasl2/index.js @@ -71,6 +71,8 @@ async function authenticate({ mech.final(decode(additionalData)); } + // https://xmpp.org/extensions/xep-0388.html#success + // this is a bare JID, unless resource binding has occurred, in which case it is a full JID. const aid = element.getChildText("authorization-identifier"); if (aid) entity._jid(aid); @@ -131,8 +133,8 @@ export default function sasl2({ streamFeatures, saslFactory }, onAuthenticate) { } await onAuthenticate(done, intersection); - - return true; // Not online yet, wait for next features + // Not online yet, wait for next features + return true; }, ); diff --git a/packages/stream-features/route.js b/packages/stream-features/route.js index 03e6ceb8..0aed4f5c 100644 --- a/packages/stream-features/route.js +++ b/packages/stream-features/route.js @@ -3,6 +3,9 @@ export default function route() { if (!stanza.is("features", "http://etherx.jabber.org/streams")) return next(); + // FIXME: instead of this prevent mechanism + // emit online once all stream features have negotiated + // and if entity.jid is set const prevent = await next(); if (!prevent && entity.jid) entity._status("online", entity.jid); };