W3C home > Mailing lists > Public > public-webrtc@w3.org > May 2015

Re: Question: how should addTrack work in relation to createOffer et. al.?

From: Martin Thomson <martin.thomson@gmail.com>
Date: Wed, 13 May 2015 12:36:58 -0700
Message-ID: <CABkgnnV7QQ+Vxo=u9uF++0P7pqwuqppy8KqMCzm_gXsh4Hv1Fw@mail.gmail.com>
To: Harald Alvestrand <harald@alvestrand.no>
Cc: "public-webrtc@w3.org" <public-webrtc@w3.org>
On 13 May 2015 at 11:38, Harald Alvestrand <harald@alvestrand.no> wrote:
>> Think about the following:
>>
>> pc.setRemoteDescription(offer)
>> pc.addTrack(X);
>> pc.createAnswer().then(answer => { ... });
>> pc.addTrack(Y);
>>
>> If code like this exists, then I think we need to have it fail
>> (because the state of the PC at the time that createAnswer is called
>> is not correct).  Then we get the sort of cleanliness that you are
>> looking for.
>>
>> (We only get in this sticky situation because we carry state between
>> operations implicitly.)
>
> I'm not sure what you're saying here - to me it seems that
> createAnswer() is clearly called between pc.addtrack(X) and
> pc.addTrack(Y), but we don't have a description of when the .then task
> of createAnswer() (and thus the ... part) is called.
>
> Care to clarify?

This code is currently safe, and I know that people do exactly this.
But it only works because createAnswer is enqueued behind
setRemoteDescription: createAnswer doesn't actually get executed until
setRemoteDescription completes.
Received on Wednesday, 13 May 2015 19:37:25 UTC

This archive was generated by hypermail 2.3.1 : Monday, 23 October 2017 15:19:44 UTC