Thu, 23 Mar 2023 18:56:32 +0000
component: Avoid adding to the global stream metatable
This allows component and client connections to be made side-by-side.
Previous to this change, loading this connection module would break the
ability to make client connections, due to overriding stream methods such as
:reopen() and :reset().
A next step would be to share the methods that the two connection modules have
in common.
319 | 1 | local verse = require"verse"; |
2 | local xmlns_receipts = "urn:xmpp:receipts"; | |
3 | ||
4 | function verse.plugins.receipts(stream) | |
5 | stream:add_plugin("disco"); | |
6 | local function send_receipt(stanza) | |
7 | if stanza:get_child("request", xmlns_receipts) then | |
8 | stream:send(verse.reply(stanza) | |
9 | :tag("received", { xmlns = xmlns_receipts, id = stanza.attr.id })); | |
10 | end | |
11 | end | |
12 | ||
13 | stream:add_disco_feature(xmlns_receipts); | |
14 | stream:hook("message", send_receipt, 1000); | |
15 | end | |
16 |