Merge pull request #105 from xsf/xep-0352-v0.2

XEP-0352 v0.2: Explain how CSI is affected by in order processing (Florian Schmaus)
This commit is contained in:
Matthew A. Miller 2015-10-01 16:11:03 -06:00
commit 0258400f59
1 changed files with 31 additions and 0 deletions

View File

@ -22,6 +22,12 @@
<supersededby/>
<shortname>NOT_YET_ASSIGNED</shortname>
&mwild;
<revision>
<version>0.2</version>
<date>2015-10-02</date>
<initials>XEP Editor (mam)</initials>
<remark><p>Explain how SCI is affected by in order procesing (Florian Schmaus).</p></remark>
</revision>
<revision>
<version>0.1</version>
<date>2014-08-28</date>
@ -117,6 +123,28 @@
<p>This protocol is intended primarily for clients with human interaction. Due to the open-ended nature of
the possible optimisations implemented by the server, it may not be suitable for non-IM purposes where the
fully standard behaviour of XMPP is required.</p>
<section2 topic="In-order processing" anchor="in-order-processing">
<p>
XMPP requires stanzas to be processed in order as per &rfc6120; 10.1. Especially "If the server's processing of a particular request could have an effect on its processing of subsequent data it might receive over that input stream..., it MUST suspend processing of subsequent data until it has processed the request.". As a result, all actions triggered by a CSI nonza sent to the server must happen before processing further requests from the same client to the server.
</p>
<p>
For example: A client sends a CSI active nonza, followed by an XMPP Ping request to the server. The server first changes the CSI state to active and flushes all eventually queued stanzsa. After the state has been restored to 'active' and
all resulting stanzas have been put on the wire, the
server sends the pong.
</p>
<example caption='In-order processing'><![CDATA[
<!-- Client sends 'active' and a ping to the server -->
<active xmlns='urn:xmpp:csi:0'/>
<iq to='capulaet.lit' from='juliet@capulet.lit/balcony' id='ping1' type='get'>
<ping xmlns='urn:xmpp:ping'/>
</iq>
<!-- Server restores stream state to active,
e.g. by flushing out queued stanzas to the client.
and responds to the ping with a pong -->
<iq to='juliet@capulet.lit/baclony' from='capulet.lit' id='ping1' type='result'/>
<!-- Stream state is now 'active' -->]]></example>
</section2>
</section1>
<section1 topic='Security Considerations' anchor='security'>
<p>To protect the privacy of users, servers MUST NOT reveal the clients active/inactive state to other
@ -128,6 +156,9 @@
<section1 topic='XMPP Registrar Considerations' anchor='registrar'>
<p>This document requires no interaction with &REGISTRAR;.</p>
</section1>
<section1 topic='Acknowledgements' anchor='acknowledgements'>
<p>Special thanks to Florian Schmaus for providing clarification text.</p>
</section1>
<section1 topic='XML Schema'>
<code><![CDATA[
<?xml version='1.0' encoding='UTF-8'?>