[Standards] XEP-0198 acknowledgements feedback
mwild1 at gmail.com
Mon Jun 7 17:16:54 UTC 2010
Having recently implemented an initial version of XEP-0198
acknowledgements support for Prosody, I have some feedback:
1) I think section 8 (Stream Closure) of XEP-0198 needs to discuss the
handling of unacknowledged stanzas.
I think clients should ensure that any and all stanzas are
acknowledged prior to closing the stream, otherwise confusion may
2) I'm not sure how much sense it makes for the period between ack
requests to be determined by the number of sent stanzas. On inactive
streams stanzas could be received but remain unacknowledged for
extended periods of time. Surely it would make more sense to say "Each
stanza should be acknowledged within X seconds of sending"?
3) Finally there's the handling of unacknowledged stanzas on
connection failure. It seems that bouncing the stanza with an error is
the simplest approach, but the XEP suggests some smarter alternatives
(which I like). However these have corner cases.
For example if the server was to handle the stanza as it would a
stanza to an unavailable resource, that stanza should go to another
resource or offline storage. However if there is a second resource
online, and it has the same priority, it quite possibly already
received that message. The same problem happens if that second
resource dropped connection too - you would end up with multiple
messages in offline storage.
We can either skim over these as implementation details, or try to
spec out exactly what a server should do in this scenario. Thoughts?
PS. What's the current consensus on splitting 0198 into separate XEPs
for acknowledgement and resumption? I'm not sure the two are very
tighly bound, quite commonly one could be implemented/enabled without
the other. Short XEPs are good :)
More information about the Standards