#1982 MUC Presence misses required user attributes
Reporter
lovetox
Owner
Nobody
Created
Updated
Stars
★ (1)
Tags
Priority-Medium
Status-New
Compliance
Type-Defect
lovetox
on
Please provide a snippet of the part of the specification which we violate
if possible:
In order to inform occupants of room roles and affiliations, and to make it easier for clients to track the current state of all users in the room, MUC service implementations MUST provide role and affiliation data (and, if allowed by the room configuration, full JID) in all presence stanzas, including presence stanzas of type "unavailable" sent when a user exits the room for any reason.
Please provide a link to the specification:
https://xmpp.org/extensions/xep-0045.html#bizrules-presence
Steps to reproduce:
- Have 2 clients with same nick (lovemovim2) joined to the MUC
- Change nick on client 1 to "lovemovim"
- Change nick on client 2 to "lovemovim"
after the nick change of the client 2, prosody sends a unavailable presence for "lovemovim2" with missing affiliation and role data.
This produce the following stanza input on client 1:
<!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) -->
<presence xmlns="jabber:client" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim2" type="unavailable">
<x xmlns="http://jabber.org/protocol/muc#user">
<item nick="lovemovim" affiliation="member" jid="lovetox2@movim.eu/gajim.QD8X38UF" role="participant" />
<status code="303" />
<status code="110" />
</x>
</presence>
<!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) -->
<presence xmlns="jabber:client" xml:lang="en-US" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim" id="9e434f0b-3f4e-4424-8965-c65ceccb07a0">
<c xmlns="http://jabber.org/protocol/caps" ver="usZsOO/Qatb2CqcK/Nk9R1nCEjE=" node="https://gajim.org" hash="sha-1" />
<x xmlns="vcard-temp:x:update" />
<occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" />
<x xmlns="http://jabber.org/protocol/muc#user">
<item affiliation="member" jid="lovetox2@movim.eu/gajim.QD8X38UF" role="participant" />
<status code="110" />
</x>
</presence>
<!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) -->
<presence xmlns="jabber:client" xml:lang="en" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim2">
<x xmlns="vcard-temp:x:update" />
<occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" />
<x xmlns="http://jabber.org/protocol/muc#user">
<item affiliation="member" jid="lovetox2@movim.eu/Conversations.3VwMkUzSjW" role="participant" />
</x>
</presence>
<!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) -->
<presence xmlns="jabber:client" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim2" type="unavailable">
<occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" />
<x xmlns="http://jabber.org/protocol/muc#user" />
</presence>
<!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) -->
<presence xmlns="jabber:client" xml:lang="en-US" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim" id="9e434f0b-3f4e-4424-8965-c65ceccb07a0">
<c xmlns="http://jabber.org/protocol/caps" ver="usZsOO/Qatb2CqcK/Nk9R1nCEjE=" node="https://gajim.org" hash="sha-1" />
<x xmlns="vcard-temp:x:update" />
<occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" />
<x xmlns="http://jabber.org/protocol/muc#user">
<item affiliation="member" jid="lovetox2@movim.eu/Conversations.3VwMkUzSjW" role="participant" />
<item affiliation="member" jid="lovetox2@movim.eu/gajim.QD8X38UF" role="participant" />
<status code="110" />
</x>
</presence>
Please provide a snippet of the part of the specification which we violate if possible: In order to inform occupants of room roles and affiliations, and to make it easier for clients to track the current state of all users in the room, MUC service implementations MUST provide role and affiliation data (and, if allowed by the room configuration, full JID) in all presence stanzas, including presence stanzas of type "unavailable" sent when a user exits the room for any reason. Please provide a link to the specification: https://xmpp.org/extensions/xep-0045.html#bizrules-presence Steps to reproduce: - Have 2 clients with same nick (lovemovim2) joined to the MUC - Change nick on client 1 to "lovemovim" - Change nick on client 2 to "lovemovim" after the nick change of the client 2, prosody sends a unavailable presence for "lovemovim2" with missing affiliation and role data. This produce the following stanza input on client 1: <!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) --> <presence xmlns="jabber:client" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim2" type="unavailable"> <x xmlns="http://jabber.org/protocol/muc#user"> <item nick="lovemovim" affiliation="member" jid="lovetox2@movim.eu/gajim.QD8X38UF" role="participant" /> <status code="303" /> <status code="110" /> </x> </presence> <!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) --> <presence xmlns="jabber:client" xml:lang="en-US" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim" id="9e434f0b-3f4e-4424-8965-c65ceccb07a0"> <c xmlns="http://jabber.org/protocol/caps" ver="usZsOO/Qatb2CqcK/Nk9R1nCEjE=" node="https://gajim.org" hash="sha-1" /> <x xmlns="vcard-temp:x:update" /> <occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" /> <x xmlns="http://jabber.org/protocol/muc#user"> <item affiliation="member" jid="lovetox2@movim.eu/gajim.QD8X38UF" role="participant" /> <status code="110" /> </x> </presence> <!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) --> <presence xmlns="jabber:client" xml:lang="en" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim2"> <x xmlns="vcard-temp:x:update" /> <occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" /> <x xmlns="http://jabber.org/protocol/muc#user"> <item affiliation="member" jid="lovetox2@movim.eu/Conversations.3VwMkUzSjW" role="participant" /> </x> </presence> <!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) --> <presence xmlns="jabber:client" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim2" type="unavailable"> <occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" /> <x xmlns="http://jabber.org/protocol/muc#user" /> </presence> <!-- Incoming Mo 09 Feb 2026 10:51:06 (lovetox2@movim.eu) --> <presence xmlns="jabber:client" xml:lang="en-US" to="lovetox2@movim.eu/gajim.QD8X38UF" from="jayasayi@conference.hydrant.one/lovemovim" id="9e434f0b-3f4e-4424-8965-c65ceccb07a0"> <c xmlns="http://jabber.org/protocol/caps" ver="usZsOO/Qatb2CqcK/Nk9R1nCEjE=" node="https://gajim.org" hash="sha-1" /> <x xmlns="vcard-temp:x:update" /> <occupant-id xmlns="urn:xmpp:occupant-id:0" id="OlIrJ/4cGKUzOsnr6Q5y0TjZH/NR3AAg2hhQiiOniIo=" /> <x xmlns="http://jabber.org/protocol/muc#user"> <item affiliation="member" jid="lovetox2@movim.eu/Conversations.3VwMkUzSjW" role="participant" /> <item affiliation="member" jid="lovetox2@movim.eu/gajim.QD8X38UF" role="participant" /> <status code="110" /> </x> </presence>