[Standards] CSI and Carbons state after SM resumption

Matthew Wild mwild1 at gmail.com
Tue Feb 7 13:20:18 UTC 2017

On 7 February 2017 at 04:50, Sam Whited <sam at samwhited.com> wrote:
> On Mon, Feb 6, 2017 at 3:53 AM, Evgeny Khramtsov <xramtsov at gmail.com> wrote:
>> And do I have privacy list with another entity? Private XML storage? In
>> more general, why couldn't an external component maintain my CSI state
>> via XEP-0356?
> I think the difference is that CSI is a part of the session state,

Yes, but I think a lack of standard terminology clouds discussion
here. In my mind (as author and implementer of CSI) there are indeed
different levels of state, to me: stream state and session state.

Stream state pertains to a single stream/connection:

  - encrypted
  - authenticated
  - compressed
  - bound
  - active/inactive

Session state pertains to a user's account:

  - Roster
  - Privacy/block lists
  - Private XML
  - PEP
  - ...

In general, in the context of XEP-0198, stream state does *not* carry
after resumption, but session state does. Binding is about the only
exception to this.

In general, stream state is managed through nonzas, and session state
through stanzas (typically addressed to the user's account JID, but
sometimes to another service).

Carbons is an example of something I'd consider stream state that is
managed through a stanza. Fetching a roster from your account also has
special effects on the stream state.

The reality is that no, XMPP is not 100% consistent, no system
designed through collaboration of so many individuals over nearly two
decades ever could be. But I still think we've done a pretty good job,
and we're continuing to learn and iterate - bind2 is a part of this.


More information about the Standards mailing list