[Standards] stream restarts
dave at cridland.net
Wed May 7 08:31:11 UTC 2008
On Tue May 6 20:37:16 2008, Alexander Gnauck wrote:
> * this saves us some round trips
If you're particularly aggressive about RTT saving, both with and
without restarts, then I think there's one RTT saved by not having
the restarts. I admit this is only off the top of my head, but I
think it's the stream restart after SASL where we save one, as the
server could then merely reissue the new stream features immediately
with the success marker.
> * gets us closer to "real xml"
I think Justin's got a point - it makes us appear, in some respects,
to be more like classical XML, but also makes us less so in other
ways. The most "XML-like" we could be would be closing the stream
prior to stack insertions.
> * makes the specs much cleaner because on some stream features we
> restart the stream (tls, sasl, compression), with otehrs we don't
> (bind, session).
Now here I disagree on several counts.
Firstly, it ought to be obvious when we restart - we do so
specifically when a stack insertion may have occured. (I say "may",
because in the case of SASL it's optional and rare).
Secondly, I'd dispute any lack of clarity caused by them anyway. If
you're going down this road, I'd like to see evidence of actual
interoperability problems caused by this alledged issue.
Thirdly, it won't make the specs any cleaner - instead, it will
simply cause confusion, as both restarting and non-restarting
implementations - both clients and servers - will exist for many
years to come, and both methods will have to be supported in all
implementations in order to interoperate.
So on balance, I'd say that this wasn't worthwhile.
1) For TLS, I'm not convinced it makes any technical difference.
(Sure, it looks nicer, and ugly isn't good, but ugly is not a reason
in itself for change). I think the net result of such a change would
2) For XEP-0138, I would argue that XEP-0138 is largely legacy
anyway. TLS compression is the way forward for most cases - those
cases which are specific to XML might benefit from XEP-0138, but
then, things like EXI will almost certainly require a stream restart
3) For SASL, you could get away without a stream restart in the case
where no security layer is negotiated quite easily - this being the
typical case. Moreover, this benefits. So, I'd be open to adding an
additional attribute to <auth/> which indicates that the initiating
entity wishes to avoid a stream restart if no security layer is
If the initiating entity does so, then the receiving entity MUST send
a <features/> element, which MAY be empty, after the <success/>
element, when ordinarily both sides would engage any security layer
and restart the stream.
Dave Cridland - mailto:dave at cridland.net - xmpp:dwd at jabber.org
Infotrope Polymer - ACAP, IMAP, ESMTP, and Lemonade
More information about the Standards