diff options
| author | mesonium <93607429+mesonium@users.noreply.github.com> | 2023-07-29 14:02:38 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-10-01 21:28:29 +0200 |
| commit | ce22fc1404c9355ca40f2641661ad0b005491602 (patch) | |
| tree | b7c7da9a35a77f90db734f32a818f1befc1c4bf0 | |
| parent | b0534dcf07e33ed8533f91dc47955b23a2c2a90d (diff) | |
fix: Add x node to MUC PM stanza (#1462)
Add <x/> tag in MUC-PMs to support better Carbon delivery in
compliance with XEP-0045 v1.28 and above.
Fixes #1306
| -rw-r--r-- | libdino/src/service/muc_manager.vala | 7 | ||||
| -rw-r--r-- | xmpp-vala/src/module/xep/0045_muc/module.vala | 5 |
2 files changed, 12 insertions, 0 deletions
diff --git a/libdino/src/service/muc_manager.vala b/libdino/src/service/muc_manager.vala index 17787387..0392247f 100644 --- a/libdino/src/service/muc_manager.vala +++ b/libdino/src/service/muc_manager.vala @@ -52,6 +52,7 @@ public class MucManager : StreamInteractionModule, Object { } return true; }); + stream_interactor.get_module(MessageProcessor.IDENTITY).build_message_stanza.connect(on_build_message_stanza); } // already_autojoin: Without this flag we'd be retrieving bookmarks (to check for autojoin) from the sender on every join @@ -604,6 +605,12 @@ public class MucManager : StreamInteractionModule, Object { conference_removed(account, jid); } + private void on_build_message_stanza(Entities.Message message, Xmpp.MessageStanza message_stanza, Conversation conversation) { + if (conversation.type_ == Conversation.Type.GROUPCHAT_PM) { + Xmpp.Xep.Muc.add_muc_pm_message_stanza_x_node(message_stanza); + } + } + private void self_ping(Account account) { XmppStream? stream = stream_interactor.get_stream(account); if (stream == null) return; diff --git a/xmpp-vala/src/module/xep/0045_muc/module.vala b/xmpp-vala/src/module/xep/0045_muc/module.vala index f8ddb6d0..b3da02d9 100644 --- a/xmpp-vala/src/module/xep/0045_muc/module.vala +++ b/xmpp-vala/src/module/xep/0045_muc/module.vala @@ -54,6 +54,11 @@ public enum Feature { UNSECURED } +public static void add_muc_pm_message_stanza_x_node(MessageStanza message_stanza) { + StanzaNode x_node = new StanzaNode.build("x", "http://jabber.org/protocol/muc#user").add_self_xmlns(); + message_stanza.stanza.put_node(x_node); +} + public class JoinResult { public MucEnterError? muc_error; public string? stanza_error; |
