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.