1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-12-21 23:28:51 -05:00

XEP-0045: Implement stable IDs on Reflection

This updates the example and the wording to make stable IDs mandatory.
It also introduces the 'muc_stable_id' feature flag fig leaf to test
servers.

Per http://logs.xmpp.org/council/2018-02-28/#16:27:29

Discussion:

* https://mail.jabber.org/pipermail/standards/2010-November/023928.html
* https://mail.jabber.org/pipermail/standards/2014-July/028988.html
This commit is contained in:
Georg Lukas 2018-03-06 14:44:38 +01:00
parent 90ecfd93fb
commit 7123a7a4ed

View File

@ -45,6 +45,14 @@
</schemaloc> </schemaloc>
<registry/> <registry/>
&stpeter; &stpeter;
<revision>
<version>1.31</version>
<date>2018-03-06</date>
<initials>gl</initials>
<remark>
<p>Require the service to maintain the 'id' attribute on message reflections.</p>
</remark>
</revision>
<revision> <revision>
<version>1.30</version> <version>1.30</version>
<date>2018-02-23</date> <date>2018-02-23</date>
@ -1178,6 +1186,7 @@
<feature var='muc_open'/> <feature var='muc_open'/>
<feature var='muc_unmoderated'/> <feature var='muc_unmoderated'/>
<feature var='muc_nonanonymous'/> <feature var='muc_nonanonymous'/>
<feature var='muc_stable_id'/>
</query> </query>
</iq> </iq>
]]></example> ]]></example>
@ -1902,27 +1911,28 @@
<example caption='Service Reflects Message to All Occupants'><![CDATA[ <example caption='Service Reflects Message to All Occupants'><![CDATA[
<message <message
from='coven@chat.shakespeare.lit/thirdwitch' from='coven@chat.shakespeare.lit/thirdwitch'
id='E36F45B8-DE06-4534-94AD-C5ED29415FCE' id='hysf1v37'
to='crone1@shakespeare.lit/desktop' to='crone1@shakespeare.lit/desktop'
type='groupchat'> type='groupchat'>
<body>Harpier cries: 'tis time, 'tis time.</body> <body>Harpier cries: 'tis time, 'tis time.</body>
</message> </message>
<message <message
from='coven@chat.shakespeare.lit/thirdwitch' from='coven@chat.shakespeare.lit/thirdwitch'
id='AFCA9201-2BA0-4A20-98D4-B9CB85F9B982' id='hysf1v37'
to='wiccarocks@shakespeare.lit/laptop' to='wiccarocks@shakespeare.lit/laptop'
type='groupchat'> type='groupchat'>
<body>Harpier cries: 'tis time, 'tis time.</body> <body>Harpier cries: 'tis time, 'tis time.</body>
</message> </message>
<message <message
from='coven@chat.shakespeare.lit/thirdwitch' from='coven@chat.shakespeare.lit/thirdwitch'
id='FB7092DB-A70B-4ACA-8FAC-5E3F89F03F64' id='hysf1v37'
to='hag66@shakespeare.lit/pda' to='hag66@shakespeare.lit/pda'
type='groupchat'> type='groupchat'>
<body>Harpier cries: 'tis time, 'tis time.</body> <body>Harpier cries: 'tis time, 'tis time.</body>
</message> </message>
]]></example> ]]></example>
<p>Note well that for tracking purposes this service assigns a new 'id' to each message it generates (here using a UUID as defined in &rfc4122;).</p> <p>The service SHOULD reflect the message with the same 'id' that was generated by the client, to allow clients to track their outbound messages. If the client did not provide an 'id', the server MAY generate an 'id' and use it for all reflections of the same message (e.g. using a UUID as defined in &rfc4122;).</p>
<p><strong>Note:</strong> the requirement to reflect the 'id' attribute was added in version 1.31 of this XEP. Servers following the new specification SHOULD advertise that with a disco info feature of 'muc_stable_id' on both the service domain and on individual MUCs, so that clients can check for support.</p>
<p>If the sender is a visitor (i.e., does not have voice in a moderated room), the service MUST return a &forbidden; error to the sender and MUST NOT reflect the message to all occupants. If the sender is not an occupant of the room, the service SHOULD return a &notacceptable; error to the sender and SHOULD NOT reflect the message to all occupants; the only exception to this rule is that an implementation MAY allow users with certain privileges (e.g., a room owner, room admin, or service-level admin) to send messages to the room even if those users are not occupants.</p> <p>If the sender is a visitor (i.e., does not have voice in a moderated room), the service MUST return a &forbidden; error to the sender and MUST NOT reflect the message to all occupants. If the sender is not an occupant of the room, the service SHOULD return a &notacceptable; error to the sender and SHOULD NOT reflect the message to all occupants; the only exception to this rule is that an implementation MAY allow users with certain privileges (e.g., a room owner, room admin, or service-level admin) to send messages to the room even if those users are not occupants.</p>
</section2> </section2>
@ -5056,6 +5066,11 @@
<desc>Semi-anonymous room in Multi-User Chat (MUC)</desc> <desc>Semi-anonymous room in Multi-User Chat (MUC)</desc>
<doc>XEP-0045</doc> <doc>XEP-0045</doc>
</var> </var>
<var>
<name>muc_stable_id</name>
<desc>This MUC will reflect the original message 'id' in 'groupchat' messages.</desc>
<doc>XEP-0045</doc>
</var>
<var> <var>
<name>muc_temporary</name> <name>muc_temporary</name>
<desc>Temporary room in Multi-User Chat (MUC)</desc> <desc>Temporary room in Multi-User Chat (MUC)</desc>