On Thu, 26 Apr 2012, Philipp Hancke wrote:
old thread alert...
Version 1.3 of XEP-0198 (Stream Management) has been released.
I implemented 0198 for s2s and am in general quite happy with it. Some notes
I wrote down while implementing this. Thanks Dave for listening to my
complaints and thanks Matthew for writing mod_smacks which was useful as the
evil peer who did not send acknowledgments.
The only major issue is that the case of sm-after-dialback is not explicitly
covered... Section 3 has the following text:
The client MUST NOT attempt to negotiate stream management until it is
authenticated; i.e., it MUST NOT send an <enable/> element until after
authentication (such as SASL, Non-SASL Authentication [8] or Server Dialback
[9]) has been completed successfully.
This does allow the usage of dialback together with session managment.
However, there should be at least one example which shows how this is used,
especially since the <enable/> element can only be sent after the <db:result
type='valid'/> has been received.
(this is violating my sense for protocol aesthetics but works
reasonbly well)
I have to change my opinion after discovering similar issues related to
stream compression...
the requirement the client "MUST NOT attempt to negotiate" until after
authentication is not necessary in the case of server dialback (which
after all isn't an authentication mechanism anyway :-) and should be removed.
There is no harm done if session managment is enabled before dialback. In
fact, since there are no stanzas flowing without authentication, the
counters won't get incremented.
In terms of implementation this keeps the sm negotiation in one place
(where stream features are handled).
I've not seen my peer servers (prosody and m-link) send
<failed><unexpected-request/></failed> so I think that changing this
requirement is possible without breaking anything.
typo in section 1: "By conStrast with stream management"
cheers
philipp