Re: draft-cridland-xmpp-session-00
Kevin Smith <[email protected]> Tue, 10 Jun 2014 09:33:58 +0100
| Newsgroups | gmane.ietf.xmpp |
|---|---|
| Message-ID | <CAOb_FnxHhbxDB2He8c1F=ZSGQecYa2fgwSUPL7=p9oweZ9S8Nw@mail.gmail.com> |
On Tue, Jun 10, 2014 at 9:26 AM, Ralph Meijer <[email protected]> wrote: > On 2014-06-10 10:07, Kevin Smith wrote: >> On Tue, Jun 10, 2014 at 8:43 AM, Dave Cridland <[email protected]> wrote: >>>> This draft will require servers and client changes, you could accomplish >>>> the same goal by a pure informational draft pointing such features are >>>> optional. Then only certain clients need to change. Note: Good clients like >>>> Swift already ignore the session feature. >>>> >>> >>> Then it's not a good client - the session feature, if advertised, is >>> mandatory. >> >> Yeah, I don't believe this is true. Swift treats the session start as >> unnecessary, but if it's offered by the server it'll negotiate it. The >> relevant code is splattered around >> http://swift.im/git/swift/tree/Swiften/Client/ClientSession.cpp > > Oh, but it is. RFC 3921 says, section 3 says: > > Upon being so informed that session establishment is required [*] > (and after completing resource binding), the client MUST establish > a session [..] > > [*] The part above that shows the stream feature being advertised, and > because of that wording I believe it implies that advertising Session > Establishment makes it required. > > Then RFC 6121 only mentions that the protocol is unnecessary (Appendix > E), but doesn't explicitly make it optional when advertised. I.e. it > doesn't change the protocol, just doesn't document it any more. You've said it's true that Swift's a bad client, then described exactly what I said Swift does as being what a good client should do :p >>> So if you remove the <optional/> marker from M-Link, every >>> conforming client has to negotiate it. >> >> Every 3920/1 client, that is, rather than every 6120/1 client. yes? > > I think you will find there are no pure forms of either, in reality. True. >>> You can't claim that if it's RFC 6121 >>> only then it's exempt, because then certain servers won't work (I think >>> ejabberd is one that actually requires the <session/>, in line with RFC >>> 3921). >> >> Right. Clients still need to implement this for old servers (I assume >> modern ejabberd /doesn't/ require this, but very old versions are >> undoubtedly out in the wild). > > I disagree. Clients only need to implement this if they want to benefit > from the removal of a roundtrip with servers advertising this flag. 'this' in this case being session establishment, not optional. > As I said before, adding this flag makes the client *choose* to not > negotiate Session Establishment, therefore making it optional. I don't > really care for renaming this with existing implementations (like your > own) already having this deployed in the field. I don't think it does > anyone a favour, except protocol purists. I do agree <optional/> should > mean 'SHOULD NOT negotiate'. Well, protocol purists and potentially future implementers. I don't think it's impossible that using 2119 language in protocol to mean something very different from the 2119 meanings could cause significant confusion. But I'm not set against this, as I said earlier, I just wanted to broach the question of doing the 'right' thing before we decide to standardise the status quo. >> If we have to do this, we should probably add some text that >> <optional/> is only used in the context of session startup. > > I'm not sure what you mean here. To be sure, this flag is only being > defined for this namespace / stream feature. Yes. I think this is worth being explicit about. /K