Moderated Message Retraction v0.3.0 events are ignored
Gajim version: 1.9.5
Gajim correctly sends moderation requests IQs with urn:xmpp:message-moderate:1 but then fails to parse the resulting incoming "message retraction stanza". Words are cheap, logs are deep:
<!-- The message that will be moderated -->
<!-- Outgoing jeu. 16 janv. 2025 14:32:59 (test@localhost) -->
<message xmlns="jabber:client" to="group-764589443@slidge.localhost" type="groupchat" id="277dae5c-babc-4ecd-b7a4-ef3ab1085c98">
<body>bloup</body>
<origin-id xmlns="urn:xmpp:sid:0" id="277dae5c-babc-4ecd-b7a4-ef3ab1085c98" />
<active xmlns="http://jabber.org/protocol/chatstates" />
<markable xmlns="urn:xmpp:chat-markers:0" />
</message>
<!-- The echo of message that will be moderated, with stanza-id='8156' -->
<!-- Incoming jeu. 16 janv. 2025 14:32:59 (test@localhost) -->
<message xmlns="jabber:client" type="groupchat" to="test@localhost/gajim.M9MVGU7C" from="group-764589443@slidge.localhost/Nicoco" id="277dae5c-babc-4ecd-b7a4-ef3ab1085c98" xml:lang="en">
<body>bloup</body>
<active xmlns="http://jabber.org/protocol/chatstates" />
<markable xmlns="urn:xmpp:chat-markers:0" />
<origin-id id="277dae5c-babc-4ecd-b7a4-ef3ab1085c98" xmlns="urn:xmpp:sid:0" />
<stanza-id id="8156" by="group-764589443@slidge.localhost" xmlns="urn:xmpp:sid:0" />
<occupant-id id="slidge-user" xmlns="urn:xmpp:occupant-id:0" />
</message>
<!-- The moderation request IQ -->
<!-- Outgoing jeu. 16 janv. 2025 14:33:04 (test@localhost) -->
<iq xmlns="jabber:client" to="group-764589443@slidge.localhost" type="set" id="28b37f42-b86d-4be0-8a75-d58c6218fcb7">
<moderate xmlns="urn:xmpp:message-moderate:1" id="8156">
<retract xmlns="urn:xmpp:message-retract:1" />
<reason>Spam</reason>
</moderate>
</iq>
<!-- The "moderated message retraction" event -->
<!-- Incoming jeu. 16 janv. 2025 14:33:04 (test@localhost) -->
<message xmlns="jabber:client" type="groupchat" to="test@localhost/gajim.M9MVGU7C" from="group-764589443@slidge.localhost" id="a9a19cbe35ce41f093a9e011e10efd28" xml:lang="en">
<stanza-id id="46661d4c-15c1-4520-937c-63327f99901e" by="group-764589443@slidge.localhost" xmlns="urn:xmpp:sid:0" />
<retract id="8156" xmlns="urn:xmpp:message-retract:1">
<moderated by="group-764589443@slidge.localhost/Nicoco" xmlns="urn:xmpp:message-moderate:1">
<occupant-id id="slidge-user" xmlns="urn:xmpp:occupant-id:0" />
</moderated>
</retract>
<occupant-id id="room" xmlns="urn:xmpp:occupant-id:0" />
</message>
<!-- The moderation request confirmation -->
<!-- Incoming jeu. 16 janv. 2025 14:33:04 (test@localhost) -->
<iq xmlns="jabber:client" type="result" to="test@localhost/gajim.M9MVGU7C" from="group-764589443@slidge.localhost" id="28b37f42-b86d-4be0-8a75-d58c6218fcb7" xml:lang="en" />
<message type='groupchat' to='test@localhost/gajim.M9MVGU7C' from='group-764589443@slidge.localhost' id='a9a19cbe35ce41f093a9e011e10efd28' xml:lang='en'><stanza-id id='46661d4c-15c1-4520-937c-63327f99901e' by='group-764589443@slidge.localhost' xmlns='urn:xmpp:sid:0'/><retract id='8156' xmlns='urn:xmpp:message-retract:1'><moderated by='group-764589443@slidge.localhost/Nicoco' xmlns='urn:xmpp:message-moderate:1'><occupant-id id='slidge-user' xmlns='urn:xmpp:occupant-id:0'/></moderated></retract><occupant-id id='room' xmlns='urn:xmpp:occupant-id:0'/></message>
2025-01-16T14:33:04 (I) nbxmpp.connection | (localhost) Signal: data-received
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Signal: before-dispatch
2025-01-16T14:33:04 (I) nbxmpp.stream | (localhost) Signal: stanza-received
2025-01-16T14:33:04 (D) gajim.c.ged | Raise event: stanza-received
2025-01-16T14:33:04 (D) gajim.c.ged | Call handler _on_stanza_received on <debug_console.DebugConsoleWindow object at 0x7f787409bcc0 (gajim+gtk+debug_console+DebugConsoleWindow at 0x26773120)>
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: BaseMessage._process_message_base
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: MUC._process_message_before_decryption
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: BaseMessage._process_message_after_base
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: MUC._process_message_after_decryption
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: Retraction._process_message
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: Retraction._process_message_retracted_tombstone
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: Moderation._process_moderation_1_message
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: MAM._mam_message_received
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: Message._check_if_unknown_contact
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: MAM._set_message_archive_info
2025-01-16T14:33:04 (D) gajim.c.storage.archive | Object before query
MAMArchiveState(pk=None,
fk_account_pk=1,
fk_remote_pk=3,
from_stanza_id=<gajim.common.storage.base.ValueMissingT object at 0x7f7877307f10>,
from_stanza_ts=<gajim.common.storage.base.ValueMissingT object at 0x7f7877307f10>,
to_stanza_id='46661d4c-15c1-4520-937c-63327f99901e',
to_stanza_ts=datetime.datetime(2025, 1, 16, 13, 33, 4, 362370, tzinfo=datetime.timezone.utc))
2025-01-16T14:33:04 (D) gajim.c.storage | Execution time for upsert_row: 5 ms
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: MUC._on_subject_change
2025-01-16T14:33:04 (I) nbxmpp.dispatcher | (localhost) Call handler: Message._message_received
2025-01-16T14:33:04 (I) gajim.c.m.message | (localhost) Received from group-764589443@slidge.localhost
2025-01-16T14:33:04 (D) gajim.c.ged | Raise event: raw-message-received
2025-01-16T14:33:04 (D) gajim.c.m.message | (localhost) Received message without text
2025-01-16T14:33:04 (I) nbxmpp.stream | (localhost) Remove ping timer
2025-01-16T14:33:04 (I) nbxmpp.stream | (localhost) Start ping timer
2025-01-16T14:33:04 (I) nbxmpp.connection | (localhost) Remove keepalive timer
2025-01-16T14:33:04 (I) nbxmpp.connection | (localhost) Add keepalive timer
2025-01-16T14:33:04 (I) nbxmpp.connection | (localhost) ::::: DATA RECEIVED ::::
Maybe the "moderated message retraction" event that slidge sends is buggy, but I don't think so.