diff --git a/amendments.json b/amendments.json index e2dea36de..9b1383bc9 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": "addition", + "status": "candidate", + "id": 38 + } ] } diff --git a/webrtc.html b/webrtc.html index d2e3a06f2..bcd202911 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 @@ -13922,7 +13935,7 @@

  • -
    +

    Closing procedure

    @@ -13940,6 +13953,11 @@

    [= underlying data transport =] was closed.

    +
  • +

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

    +
  • Unless the procedure was initiated by @@ -13948,7 +13966,7 @@

    {{RTCDataChannelState/"closing"}} and [= fire an event =] named {{RTCDataChannel/closing}} at channel.

    -

  • +
  • Run the following steps in parallel: