- From: Jan-Ivar Bruaroey via GitHub <sysbot+gh@w3.org>
- Date: Fri, 14 Jun 2019 00:41:50 +0000
- To: public-webrtc@w3.org
jan-ivar has just created a new issue for https://github.com/w3c/webrtc-pc: == SLD without {sdp} reads [[LastCreatedOffer/Answer]] at the wrong time == The current prose on [setLocalDescription](https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-setlocaldescription) reads **[[LastCreatedOffer]]** and **[[LastCreatedAnswer]]** on method entry. This is the wrong time, and may produce the wrong result if other methods are enqueued. For example, it would fail in the [FIFO peer](https://docs.google.com/presentation/d/1UrXARLbAfwmfK686rX_9W_-FGIc62ZDwVd079wIoX7I/edit?ts=5cdd966f#slide=id.g5b048ace1b_21_24) case: ```js io.onmessage = async ({data: {description, candidate}}) => { if (description) { await Promise.all([ // ←- avoids race! pc.setRemoteDescription(description), // ←- pc.createAnswer(), // ←- pc.setLocalDescription({type: "answer"}) // ←- unusual, works today ]); // ←- ``` Here, all three promise-returning negotiation methods are invoked at the same time, which means `setLocalDescription` would read `[[LastCreatedAnswer]]` before the *createAnswer* has succeeded (or even begun the in-parallel part of its algorithm). This would cause SLD to either fail (if `[[LastCreatedAnswer]]` was `null`, or apply an outdated answer. Instead, we need to read these internal slots in the enqueued steps. Please view or discuss this issue at https://github.com/w3c/webrtc-pc/issues/2208 using your GitHub account
Received on Friday, 14 June 2019 00:41:52 UTC