Hello,

While reviewing XEP-0198 it was noticed an area in Section 4. Acks that may need some more clarification. It states the following:

"When an <r /> element ("request") is recieved, the recipient MUST acknowledge it by sending an <a /> element to the sender containing a value 'h' that is equal to the number of stanzas handled by the recipient of the <r /> element."

The paragraph continues explaining under what circumstances an <a /> may be withheld, timeout only, but does not go into what the sender of the <r /> should do if it does not receive an <a /> for the sent <r />. Since this is stream level protocol, it has been assumed that at some point the sender of the <r /> should send a <stream:error> to the recipient of the <r /> and close the stream. This leaves the question of which stream error should be sent. The stream error 'policy-violation' (http://xmpp.org/rfcs/rfc6120.html#streams-error-conditions-policy-violation) seems to be the most logical, as the recipient of the <r /> has violated the negotiated policies of the stream. It would also allow for inserting an application-specific condition element signaling the violator to either attempt to resume the session, or abandon resumption and start anew.

Proposed update to the section:

If a recipient of an <r /> element does not send an <a /> response, the sender of the <r /> MUST send a stream error of type policy-violation and close the stream. The sender SHOULD send an application-specific condition element of <request-not-acked />.

If stream resumption was enabled when enabling stream management, then the recipient MAY attempt to resume the stream.

The sender SHOULD NOT error the stream if the next stanza is not an <a />. The recipient side may have stanzas queued up for delivery and so may be in the process of delivering them when it receives and processes the <r /> stanza. It is RECOMMENDED that the sending side wait for some timeout period before sending the stream:error. The timeout SHOULD be long enough for a given client time to clean out any queues. Since this extension is to help establish continuity of communication, especially for clients that have inconsistent connections, providing some leeway in the form of time, and not immediately kicking due to delivery of stanzas other than an <a />, for a client to respond to an <r /> with an <a /> is important to help with the spirit of the purpose of Stream Management.

--
Stephen Hill
Engineer.software/qa Engineering
Information Technology
[email protected]
[email protected]
Phone: +1 303 308 3241
Cisco Systems, Inc.
Cisco.com - http://www.cisco.com

This email may contain confidential and privileged material for the sole use of 
the intended recipient.  Any review, use, distribution or disclosure by others 
is strictly prohibited.  If you are not the intended recipient (or authorized 
to receive for the recipient), please contact the sender by reply email and 
delete all copies of this message.

Reply via email to