diff --git a/amendments.json b/amendments.json index e2dea36de..89c591147 100644 --- a/amendments.json +++ b/amendments.json @@ -520,5 +520,14 @@ "status": "candidate", "id": 36 } + ], + "closing-procedure": [ + { + "description": "Prevent GC of non-closed RTCDataChannels", + "pr": 2902, + "type": "correction", + "status": "candidate", + "id": 38 + } ] } diff --git a/webrtc.html b/webrtc.html index d2e3a06f2..c78989ef9 100644 --- a/webrtc.html +++ b/webrtc.html @@ -1312,6 +1312,13 @@

  • +

    + Let connection have a + [[\DataChannels]] internal slot, initialized to + an empty [=ordered set=]. +

    +
  • +
  • Let connection have an [[\Operations]] internal slot, representing an [= operations chain =], @@ -13326,6 +13333,12 @@

    negotiation-needed flag =] for connection.

  • +
  • +

    + [=list/Append=] channel to + connection.{{RTCPeerConnection/[[DataChannels]]}}. +

    +
  • Return channel and continue the following @@ -13894,6 +13907,12 @@

    false.

  • +
  • +

    + [=list/Append=] channel to + connection.{{RTCPeerConnection/[[DataChannels]]}}. +

    +
  • Set channel.{{RTCDataChannel/[[ReadyState]]}} to @@ -13922,7 +13941,7 @@

  • -
    +

    Closing procedure

    @@ -13940,6 +13959,17 @@

    [= underlying data transport =] was closed.

    +
  • +

    + Let connection be the {{RTCPeerConnection}} object + associated with channel. +

    +
  • +
  • +

    + [=list/Remove=] channel from connection.{{RTCPeerConnection/[[DataChannels]]}}. +

    +
  • Unless the procedure was initiated by @@ -14011,6 +14041,12 @@

    {{RTCDataChannelState/"closed"}}.

  • +
  • +

    + [=list/Remove=] channel from connection.{{RTCPeerConnection/[[DataChannels]]}} + if it is still there. +

    +
  • If the [= underlying data transport | transport =] was closed