From 9abf8f6869bc35c76bdfa86416012d4e7f0dda78 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 24 Apr 2026 11:09:10 +0200 Subject: Add support for Sasl2 + Bind2 --- xmpp-vala/src/module/xep/0280_message_carbons.vala | 30 +++++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'xmpp-vala/src/module/xep/0280_message_carbons.vala') diff --git a/xmpp-vala/src/module/xep/0280_message_carbons.vala b/xmpp-vala/src/module/xep/0280_message_carbons.vala index f7863188..b396ee54 100644 --- a/xmpp-vala/src/module/xep/0280_message_carbons.vala +++ b/xmpp-vala/src/module/xep/0280_message_carbons.vala @@ -1,6 +1,6 @@ namespace Xmpp.Xep.MessageCarbons { -private const string NS_URI = "urn:xmpp:carbons:2"; +public const string NS_URI = "urn:xmpp:carbons:2"; public class Module : XmppStreamModule { public static ModuleIdentity IDENTITY = new ModuleIdentity(NS_URI, "0280_message_carbons_module"); @@ -8,8 +8,10 @@ public class Module : XmppStreamModule { private ReceivedPipelineListener received_pipeline_listener = new ReceivedPipelineListener(); public async void enable(XmppStream stream) { - Iq.Stanza iq = new Iq.Stanza.set(new StanzaNode.build("enable", NS_URI).add_self_xmlns()); - yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, iq); + if (stream.get_flag(Flag.IDENTITY) == null) { + Iq.Stanza iq = new Iq.Stanza.set(new StanzaNode.build("enable", NS_URI).add_self_xmlns()); + yield stream.get_module(Iq.Module.IDENTITY).send_iq_async(stream, iq); + } } public async void disable(XmppStream stream) { @@ -90,12 +92,26 @@ public class MessageFlag : Xmpp.MessageFlag { return (MessageFlag) message.get_flag(NS_URI, ID); } - public override string get_ns() { - return NS_URI; + public override string get_ns() { return NS_URI; } + + public override string get_id() { return ID; } +} + +public class Flag : Xmpp.XmppStreamFlag { + public static FlagIdentity IDENTITY = new FlagIdentity(NS_URI, "carbons"); + + public override string get_ns() { return NS_URI; } + public override string get_id() { return IDENTITY.id; } +} + +public class Bind2Activation : Bind2.Bind2InlineActivation { + public override StanzaNode? get_activation_node(XmppStream stream) { + stream.add_flag(new Flag()); + return new StanzaNode.build("enable", NS_URI).add_self_xmlns(); } - public override string get_id() { - return ID; + public override void on_bound(XmppStream stream, StanzaNode bound_node) { + // There is no "enabled" node for carbons } } -- cgit v1.3