git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@2728 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2009-02-11 16:06:46 +00:00
parent f2a15706d8
commit 7f049fcf6a
1 changed files with 21 additions and 50 deletions

View File

@ -27,6 +27,12 @@
&scottlu;
&hildjj;
&seanegan;
<revision>
<version>0.15</version>
<date>2009-02-11</date>
<initials>psa</initials>
<remark><p>Simplified flow by optionally including responder candidate in session-accept.</p></remark>
</revision>
<revision>
<version>0.14</version>
<date>2008-12-16</date>
@ -139,6 +145,7 @@
<li>Where communication with non-XMPP entities is needed, push as much complexity as possible onto server-side gateways between the XMPP network and the non-XMPP network.</li>
</ol>
</section1>
<section1 topic='Jingle Conformance' anchor='conformance'>
<p>In accordance with Section 10 of <cite>XEP-0166</cite>, this document specifies the following information related to the Jingle Raw UDP transport type:</p>
<ol>
@ -150,7 +157,6 @@
</section1>
<section1 topic='Protocol Description' anchor='protocol'>
<section2 topic='Flow' anchor='protocol-flow'>
<p>The overall protocol flow for negotiation of the Jingle Raw UDP Transport Method is as follows.</p>
<code><![CDATA[
@ -160,11 +166,7 @@ INITIATOR RESPONDER
|----------------------------------->|
| ack |
|<-----------------------------------|
| transport-info: candidate |
|<-----------------------------------|
| ack |
|----------------------------------->|
| session-accept |
| session-accept (w/candidate) |
|<-----------------------------------|
| ack |
|----------------------------------->|
@ -230,41 +232,7 @@ INITIATOR RESPONDER
to='romeo@montague.lit/orchard'
type='result'/>
]]></example>
<p>As soon as the responder acknowledges the session initiation request, it SHOULD send its own Raw UDP candidate to the initiator via a Jingle "transport-info" message. It does this by sending a transport-info message to the initiator, as shown in the following example (notice that this example includes two &CANDIDATE; elements, one for RTP and the other for RTCP).</p>
<example caption="Responder sends its Raw UDP candidate"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='jingle2'
to='romeo@montague.lit/orchard'
type='set'>
<jingle xmlns='urn:xmpp:jingle:0'
action='transport-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<transport xmlns='urn:xmpp:jingle:transports:raw-udp:1'>
<candidate component='1'
generation='0'
id='z7sdjb01hf'
ip='208.68.163.214'
port='9876'/>
<candidate component='2'
generation='0'
id='hg92lsn10b'
ip='208.68.163.214'
port='9877'/>
</transport>
</content>
</jingle>
</iq>
]]></example>
<p>The initiator MUST then acknowledge receipt by returning an IQ result (or a standard XMPP error).</p>
<example caption="Initiator acknowledges receipt of candidate"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='jingle2'
to='juliet@capulet.lit/balcony'
type='result'/>
]]></example>
<p>It is then the responsibility of the responder to accept the session offer.</p>
<p>As soon as the responder acknowledges the session initiation request, it MUST send a Jingle session-accept to the initiator. This session-accept message MAY include another Raw UDP candidate generated by the responder; alternativey, the responder MAY send this in a Jingle transport-info message.</p>
<example caption="Responder definitively accepts the session"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
id='accept1'
@ -282,15 +250,21 @@ INITIATOR RESPONDER
<transport xmlns='urn:xmpp:jingle:transports:raw-udp:1'>
<candidate component='1'
generation='0'
id='a9j3mnbtu1'
ip='10.1.1.104'
port='13540'/>
id='z7sdjb01hf'
ip='208.68.163.214'
port='9876'/>
<candidate component='2'
generation='0'
id='hg92lsn10b'
ip='208.68.163.214'
port='9877'/>
</transport>
</content>
</jingle>
</iq>
]]></example>
<p>And the initiator acknowledges the session acceptance.</p>
<p>(Notice that the foregoing example includes two &CANDIDATE; elements, one for RTP and the other for RTCP.)</p>
<p>The initiator then acknowledges the session acceptance.</p>
<example caption="Initiator acknowledges session acceptance"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='accept1'
@ -300,7 +274,7 @@ INITIATOR RESPONDER
</section2>
<section2 topic='Sending Media' anchor='media'>
<p>Upon sending the session-accept action, the responder MUST immediately send media to the initiator. Upon receiving the session-accept action, the initiator MUST immediately send media to the responder.</p>
<p>Upon sending the session-accept action, the responder MUST immediately send attempt to send media to the initiator. Upon receiving the session-accept action, the initiator MUST immediately attempt to send media to the responder.</p>
<p>An implementation SHOULD enforce a timeout on receipt of media, such that if no media is received from the other party within a reasonable period of time, the implementation will consider the session to have failed and therefore send to the other party a Jingle "session-terminate" action with a reason code of &lt;timeout/&gt;.</p>
<example caption="Responder terminates the session"><![CDATA[
<iq from='juliet@capulet.lit/balcony'
@ -311,9 +285,7 @@ INITIATOR RESPONDER
action='session-terminate'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<reason>
<timeout/>
</reason>
<reason><timeout/></reason>
</jingle>
</iq>
]]></example>
@ -325,7 +297,6 @@ INITIATOR RESPONDER
type='result'/>
]]></example>
</section2>
</section1>
<section1 topic='Determining Support' anchor='support'>