1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-23 17:52:15 -05:00

Merge branch 'feature/xep-0389' into premerge

This commit is contained in:
Jonas Schäfer 2020-11-17 15:27:47 +01:00
commit 3eee9e3d48

View File

@ -31,6 +31,14 @@
<supersededby/> <supersededby/>
<shortname>ibr2</shortname> <shortname>ibr2</shortname>
&sam; &sam;
<revision>
<version>0.6.0</version>
<date>2020-11-17</date>
<initials>ssw</initials>
<remark>
<p>Error out if a client selects an invalid flow</p>
</remark>
</revision>
<revision> <revision>
<version>0.5.0</version> <version>0.5.0</version>
<date>2020-05-26</date> <date>2020-05-26</date>
@ -363,7 +371,7 @@
If an entity supports issuing challenges but does not provide any flows If an entity supports issuing challenges but does not provide any flows
after stream negotiation is complete it MUST respond with an empty list. after stream negotiation is complete it MUST respond with an empty list.
Similarly, an entity that supports this specification but does not support Similarly, an entity that supports this specification but does not support
issuign challenges itself (for example, a client that only supports issuing challenges itself (for example, a client that only supports
receiving challenges) it MUST respond successfully with an empty list. receiving challenges) it MUST respond successfully with an empty list.
</p> </p>
<example caption='Empty registration flows results'><![CDATA[ <example caption='Empty registration flows results'><![CDATA[
@ -371,7 +379,7 @@
<register xmlns='urn:xmpp:register:0'/> <register xmlns='urn:xmpp:register:0'/>
</iq>]]></example> </iq>]]></example>
</section2> </section2>
<section2 topic='Issuing Challenges' anchor='challenge'> <section2 topic='Selecting a Flow' anchor='selecting'>
<p> <p>
A client selects the registration or recovery feature for negotiation by A client selects the registration or recovery feature for negotiation by
replying with an element of the same name and namespace. replying with an element of the same name and namespace.
@ -384,6 +392,19 @@
<register xmlns='urn:xmpp:register:0'> <register xmlns='urn:xmpp:register:0'>
<flow id='1'/> <flow id='1'/>
</register>]]></example> </register>]]></example>
<p>
If during stream initialization the client attempts to select a flow that
does not match one of the flows sent by the server, the server MUST
respond with an "undefined-condition" stream error containing an
"invalid-flow" application error qualified by the 'urn:xmpp:register:0'
namespace.
</p>
<example caption='Server responds to an invalid selection during stream negotiation'><![CDATA[
<stream:error>
<undefined-condition xmlns='urn:ietf:params:xml:ns:xmpp-streams'/>
<invalid-flow xmlns='urn:xmpp:register:0'/>
</stream:error>
</stream:stream>]]></example>
<p> <p>
If the client is initiating registration or recovery after a stream has If the client is initiating registration or recovery after a stream has
already been initiated it uses the same registration element wrapped in an already been initiated it uses the same registration element wrapped in an
@ -396,7 +417,21 @@
</recovery> </recovery>
</iq>]]></example> </iq>]]></example>
<p> <p>
The server then replies to the IQ or feature selection with a challenge. If the client attempts to select a flow that does not match one of the
flows sent by the server in response to an IQ after stream initialization
the server MUST respond with a stanza error of type "item-not-found".
</p>
<example caption='Server responds to an invalid selection after stream negotiation'><![CDATA[
<iq type='error'>
<error type='cancel'>
<item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
</error>
</iq>]]></example>
</section2>
<section2 topic='Issuing Challenges' anchor='challenge'>
<p>
If a valid flow is selected by the client the server then replies to the
IQ or feature selection with a challenge.
If replying to an IQ, the challenge must be wrapped in an IQ of type If replying to an IQ, the challenge must be wrapped in an IQ of type
"result". "result".
Challenges take the form of a &lt;challenge/&gt; element qualified by the Challenges take the form of a &lt;challenge/&gt; element qualified by the