Skip to content

Moderations are not delivered via MAM #4507

@mesonium

Description

@mesonium

Environment

  • ejabberd version: 25.10
  • Erlang version: Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 15.2.7
  • OS: Linux (Debian)
  • Installed from: source

Bug description

Assuming MAM is enabled and works for normal messages

  1. Create a (public) MUC
  2. Join this MUC with two devices, e. g. a recent Gajim and Conversations
  3. Send a message
  4. Go offline with one of the devices
  5. Moderate the message with the other device
  6. Go back online

Observed result: The message has not been moderated.

Logs

Some extract, moderated in Conversations, while Gajim was offline

Send XML on stream = <<"
<message to='user@	<snip>/Conversations.resource' from='cavufene@conference.<snip>' type='groupchat'>
    <apply-to id='1766947069789511' xmlns='urn:xmpp:fasten:0'>
        <moderated by='cavufene@conference.<snip>/nick' xmlns='urn:xmpp:message-moderate:0'>
            <retract xmlns='urn:xmpp:message-retract:0'/>
        </moderated>
    </apply-to>
    <retract id='1766947069789511' xmlns='urn:xmpp:message-retract:1'>
        <moderated by='cavufene@conference.<snip>/nick' xmlns='urn:xmpp:message-moderate:1'/>
    </retract>
    <occupant-id id='g20AAAAgaAz8YITMBGhfjs9jF3PeT/FsmmtG0yEl4daZ3GChWms=' xmlns='urn:xmpp:occupant-id:0'/>
</message>
">>
#message{
    id = <<>>,type = groupchat,lang = <<>>,
    from =
        #jid{
            user = <<"cavufene">>,
            server = <<"<snip>">>,resource = <<>>,
            luser = <<"cavufene">>,
            lserver = <<"<snip>">>,lresource = <<>>},
    to =
        #jid{
            user = <<"<snip>">>,server = <<"<snip>">>,
            resource = <<"Conversations.Resource">>,luser = <<"<snip>">>,
            lserver = <<"<snip>">>,
            lresource = <<"Conversations.Resource">>},
    subject = [],body = [],thread = undefined,
    sub_els =
        [#fasten_apply_to{
             id = <<"1766947059140443">>,external = undefined,
             sub_els =
                 [#message_moderated_21{
                      by =
                          #jid{
                              user = <<"cavufene">>,
                              server = <<"<snip>">>,
                              resource = <<"<snip>">>,luser = <<"cavufene">>,
                              lserver = <<"<snip>">>,
                              lresource = <<"<snip>">>},
                      reason = undefined,
                      sub_els = [#message_retract_30{}],
                      occupant_id = undefined}]},
         #message_retract{
             id = <<"1766947059140443">>,reason = undefined,
             moderated =
                 #message_moderated{
                     by =
                         #jid{
                             user = <<"cavufene">>,
                             server = <<"<snip>">>,
                             resource = <<"<snip>">>,luser = <<"cavufene">>,
                             lserver = <<"<snip>">>,
                             lresource = <<"<snip>">>},
                     sub_els = [],occupant_id = undefined}},
         #occupant_id{
             id = <<"g20AAAAgaAz8YITMBGhfjs9jF3PeT/FsmmtG0yEl4daZ3GChWms=">>}],
    meta = #{stanza_id => 1766947206956153,mam_ignore => true}}

When going online in Gajim I saw

<message to='[email protected]/gajim.Foo' from='[email protected]/resource' type='error'>
	<apply-to id='1766865869974241'
		xmlns='urn:xmpp:fasten:0'>
		<moderated by='[email protected]/resource'
			xmlns='urn:xmpp:message-moderate:0'>
			<retract
				xmlns='urn:xmpp:message-retract:0'/>
			</moderated>
		</apply-to>
		<retract id='1766865869974241'
			xmlns='urn:xmpp:message-retract:1'>
			<moderated by='[email protected]/resource'
				xmlns='urn:xmpp:message-moderate:1'/>
			</retract>
			<occupant-id id='g20AAAAgq5N9uUOb0TlofAbYkPB5+EM54T3xeIwg5YsKCOQVSFk='
				xmlns='urn:xmpp:occupant-id:0'/>
				<error type='cancel'>
					<service-unavailable
						xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
						<text xml:lang='en'
							xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'>User session terminated
						</text>
					</error>
					<x
						xmlns='http://jabber.org/protocol/muc#user'>
						<item jid='[email protected]/gajim.resource' role='none' affiliation='owner'/>
						<status code='110'/>
					</x>
</message>

Additional Notes

  • Reproduced on Conversations.im
  • Works fine with Prosody 13.0.

Correction: Could also reproduce with Prosody 13.0 now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions