RE: Issue 208: RTCIceGatherer.close affect on RTCIceTransport / RTCDtlsTransport

Below, find collected what the specification currently says about iceGatherer.close(), and the effects on other objects such as IceTransport and DtlsTransport.
Summary:
Calling iceGatherer.close() causes iceGatherer.state to transition to "closed" and associated iceTransport.state to transition to "disconnected" (not "failed" or "closed").
There appears to be no effect on DtlsTransport.state.  This makes some amount of sense, since iceTransport.start() could be called with another IceGatherer, thereby restarting ICE.
DETAILS
Here is the description of iceGatherer.close():
close
Prunes all local candidates. Associated RTCIceTransport objects transition to the "disconnected" state. Calling close() when state is "closed" has no effect.
Calling iceGatherer.close() will also cause iceGatherer.state to transition to "closed" as noted in the description of the "closed" state:
closed

The RTCIceGatherer has been closed intentionally or as the result of an error.
The definition of the iceTransport.state value of "disconnected" is:
disconnected

The RTCIceTransport has received at least one local and remote candidate, and a local and remote RTCIceCandidateComplete dictionary was not added as the last candidate, but all appropriate candidate pairs thus far have been tested and failed (or consent checks, once successful, have now failed). Other candidate pairs may become available for testing as new candidates are trickled, and therefore the "failed" state has not been reached.
Here is the definition of dtlsTransport.state of "closed" :
closed

The DTLS connection has been closed intentionally via a call to stop() or as the result of an error (such as a failure to validate the remote fingerprint). Calling transport.stop() will also result in a transition to the "closed" state.
[BA] As a result of the above, if iceGatherer.close() is called, iceGatherer.state transitions to "closed" and the associated IceTransport objects transition to the '"disconnected" state. What if iceTransport.state had previously been "failed"? Should a transition to "disconnected" still occur? The proposed IceTransport state diagram seems to show a potential transition between "failed" and "disconnected", so it seems the answer is "yes".
However, dltsTransport.state does not appear to be affected, since calling iceGatherer.close() results in transport.state transitioning to "disconnected" and not "closed".


From: Bernard Aboba [mailto:Bernard.Aboba@microsoft.com]
Sent: Tuesday, May 26, 2015 1:18 PM
To: public-ortc@w3.org
Subject: Issue 208: RTCIceGatherer.close affect on RTCIceTransport / RTCDtlsTransport

Opened by Robin Raymond:
https://github.com/openpeer/ortc/issues/208
needs to:

  *   closes ports
  *   moves associated RTCIceTransport to "disconnected" state
  *   does not affect attached RTCDtlsTransport
(answer this issue on list, see if it is "good enough", think this is already all done in spec)

Received on Tuesday, 26 May 2015 20:31:21 UTC