git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@4158 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2010-04-13 20:27:25 +00:00
parent 6e84ba5b65
commit df83f66e69
1 changed files with 39 additions and 1 deletions

View File

@ -22,6 +22,12 @@
<shortname>jingle-ibb</shortname>
<discuss>jingle</discuss>
&stpeter;
<revision>
<version>0.4</version>
<date>2010-04-13</date>
<initials>psa</initials>
<remark><p>Added roundtrip for exchange of IBB &lt;open/&gt; element to provide proper layering between Jingle and IBB; defined how to close a single session within the bytestream; defined how to close the bytestream itself.</p></remark>
</revision>
<revision>
<version>0.3</version>
<date>2010-02-16</date>
@ -73,6 +79,10 @@ Initiator Responder
|<---------------------------|
| ack |
|--------------------------->|
| IBB <open/> |
|--------------------------->|
| ack |
|<---------------------------|
| IBB "SESSION" |
|<==========================>|
| session-terminate |
@ -135,7 +145,26 @@ Initiator Responder
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>The foregoing Jingle negotiation replaces the &lt;open/&gt; element from <cite>XEP-0047</cite>. Therefore the initiator can now immediately begin sending IBB packets using an IQ-set for each chunk as described in XEP-0047, where the responder will acknowledge each IQ-set in accordance with &rfc3920;.</p>
<p>In essence, the foregoing Jingle negotiation replaces the &lt;open/&gt; element from <cite>XEP-0047</cite>. However, to provide consistent layering of Jingle on top of IBB (thus enabling separation of existing IBB code from new Jingle code), the initiator now MUST also send the &lt;open/&gt; element, with the same 'block-size' and 'sid' values as for the Jingle &lt;transport/&gt; element. This adds a roundtrip to the negotiation and could be considered a "no-op", but the extra roundtrip is inconsequential given that the parties are exchanging base64-encoded data in-band.</p>
<example caption='Initiator sends IBB &lt;open/&gt;'><![CDATA[
<iq from='romeo@montague.net/orchard'
id='jn3h8g65'
to='juliet@capulet.com/balcony'
type='set'>
<open xmlns='http://jabber.org/protocol/ibb'
block-size='4096'
sid='ch3d9s71'
stanza='iq'/>
</iq>
]]></example>
<p>The responder returns an IQ-result to the initiator.</p>
<example caption='Responder accepts IBB &lt;open/&gt;'><![CDATA[
<iq from='juliet@capulet.com/balcony'
id='jn3h8g65'
to='romeo@montague.net/orchard'
type='result'/>
]]></example>
<p>Now the initiator can begin sending IBB packets using an IQ-set for each chunk as described in XEP-0047, where the responder will acknowledge each IQ-set in accordance with &rfc3920;.</p>
<example caption='An IBB packet'><![CDATA[
<iq from='romeo@montague.net/orchard'
id='ls72b58f'
@ -201,6 +230,11 @@ Initiator Responder
<p>Here the Jingle Session ID is the same ("a73sjjvkla37jfea") but the new IBB Session ID ("bt8a71h6") is different from the old IBB Session ID that is already in use ("ch3d9s71").</p>
</section1>
<section1 topic='Closing a Session or Bytestream' anchor='close'>
<p>To close one session within a bytestream, the initiator sends an IBB &lt;close/&gt; element as specified in <cite>XEP-0047</cite>.</p>
<p>To close the bytestream itself, the initiator terminates the Jingle session as specified in <cite>XEP-0166</cite>.</p>
</section1>
<section1 topic='Processing Rules and Usage Guidelines' anchor='rules'>
<p>The same processing rules and usage guidelines defined in XEP-0047 apply to the Jingle IBB Transport Method.</p>
</section1>
@ -305,4 +339,8 @@ Initiator Responder
]]></code>
</section1>
<section1 topic='Acknowledgements' anchor='ack'>
<p>Thanks to Paul Aurich, Fabio Forno, and Marcus Lundblad for their feedback.</p>
</section1>
</xep>