Hello Yann, On Thu, 17 Dec 2009 17:28:22 +0100, Yann Le Boulanger <[email protected]> wrote:
[skipped] > First, the preferences: > I don't see the difference between > <auto save='false'/> > and > <method type='auto' use='forbid'/> > in example 3. [skipped] > the <auto> is for the server (and it's the only parameter that server > looks at) and <method> element is only a sort of storage place for > client used only when negociating a session? But in that case Why > having 3 methods? Because in stanza negociation we only negociate ONE > parameter: logging, that doesn't tell if we are negiciating > server-side automatic logging or server-side manual logging or local > logging. See "2.7 Server Archiving Preferences Interpretation" section, it was added exactly to clarify these kinds of confusions ;-) Your understanding is correct: <auto> is for the server and <method> is for client(s). (Note: I assume that by "used only when negotiating a session" you mean off-the-record negotiations, as there's no negotiation other than that related to archiving, I believe) OTR negotiation does not have any relation to <method> elements: the result of OTR negotiation is the agreement whether archiving is allowed or not, while <method> elements specify exactly _how_ archiving is going to be performed by the client and is subject to client interpretation only. So, if the result of OTR negotiation is "client may perform archiving", the client may consult server-side archiving preferences (and <method> elements in particular) to determine in what way the archiving should happen exactly. Or it may skip this step and determine the way to perform archiving using its local preferences only - that's also allowed by spec (see "2.1" section). > Second point: what to do after a negociation. Imagine I have automatic > logging set to on. I start chatting, so messages are logged on my > server and locally. In the same time, I negociate a session with this > contact, and the result is that he doesn't want me to log the > conversation. So ok I remove logs on my local database, no problem, > than I have to tell the server to remove logs, no problem, it's > defined in this XEP, but I also have to tell him to stop logging this > particular session. How do I do that? I don't want to disable > automatic logging with other contacts, only with this particular > contact in this particular session. I believe current spec does not allow disabling auto-archiving for particular contact + particular session :-( You can either add to archiving prefs the item for this particular contact with save='false' (such as <item jid='[email protected]' save='false'/>), but that would block all automatic archiving for this contact, not for particular session only - or you can issue <auto save='false'/>, that would work for current session only - but you've right that it would block all automatic archiving, not only for this contact. (Or you can just issue <remove> command at the end of conversation, but it looks like a hacky way of doing things) In fact I never really understood the whole idea of having OTR in XEP-136 in the first place: my belief is that it's as useful as barrier in this well-known picture: http://www.syslog.com/~jwilson/pics-i-like/kurios119.jpg - IMHO just saying "Please, don't tell it to anyone!" is as efficient (if not better) as the whole OTR part of XEP-136 ;-) Therefore I've never tried to really analyse any archiving scenarios involving OTR, and it's quite possible there are a lot of other inconsistencies there. If you think it's important, though, I think it's worth to come up with the idea on how to modify the spec to allow that scenario and post it here for discussion ;-) -- Good luck! Alexander
