mirror of
https://github.com/moparisthebest/xeps
synced 2024-11-24 10:12:19 -05:00
Explain how CSI is affected by in order processing
Clarify how the in order processing requirement (RFC 6120 § 10.1) affects CSI.
This commit is contained in:
parent
cd75571f5d
commit
2a24caea18
22
xep-0352.xml
22
xep-0352.xml
@ -117,6 +117,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
|
||||
|
Loading…
Reference in New Issue
Block a user