File

spec/scansion/presence_preapproval.scs @ 12053:03e9587fbfd2

mod_smacks: Switch storage for tracking resumption tokens All that was a complicated way to limit the number of resumable sessions. Let's control resource usage some other way. This leaves the essence of mapping resumption tokens to live sessions. This keeps resumption state across reloads.
author Kim Alvefur <zash@zash.se>
date Thu, 02 Dec 2021 14:41:19 +0100
parent 10515:35bf3b80480f
line wrap: on
line source

# server supports contact subscription pre-approval (RFC 6121 3.4)

[Client] Alice
	jid: preappove-a@localhost
	password: password

[Client] Bob
	jid: preapprove-b@localhost
	password: password

---------

Alice connects

Alice sends:
	<presence/>

Alice receives:
	<presence/>

Alice sends:
	<presence to="${Bob's JID}" type="subscribed"/>

Bob connects

Bob sends:
	<iq type="get" id="roster1">
		<query xmlns="jabber:iq:roster"/>
	</iq>

Bob receives:
	<iq type="result" id="roster1">
		<query xmlns="jabber:iq:roster" ver="{scansion:any}">
		</query>
	</iq>

Bob sends:
	<presence/>

Bob receives:
	<presence from="${Bob's full JID}"/>

Bob sends:
	<presence to="${Alice's JID}" type="subscribe" />

Bob receives:
	<iq type='set' id='{scansion:any}'>
		<query ver='1' xmlns='jabber:iq:roster'>
			<item jid="${Alice's JID}" subscription='none' ask='subscribe' />
		</query>
	</iq>



Bob receives:
	<presence from="${Alice's JID}" type="subscribed" />

Bob disconnects

Alice sends:
	<iq type="get" id="roster1">
		<query xmlns="jabber:iq:roster"/>
	</iq>

Alice receives:
	<iq type="result" id="roster1">
		<query xmlns="jabber:iq:roster" ver="{scansion:any}">
			<item jid="${Bob's JID}" subscription="from" />
		</query>
	</iq>

Alice disconnects

Bob disconnects