Closed
Bug 1425956
Opened 8 years ago
Closed 8 years ago
Removing a track and later re-adding it to a peer connection causes InvalidSessionDescriptionError
Categories
(Core :: WebRTC: Signaling, enhancement, P2)
Tracking
()
RESOLVED
FIXED
mozilla59
Tracking | Status | |
---|---|---|
firefox59 | --- | fixed |
People
(Reporter: jib, Assigned: bwc)
References
Details
Attachments
(4 files)
STRs:
1. Open https://jsfiddle.net/jib1/an44uhtd/ and share cam+mic
2. check ☑ hold
3. uncheck ☐ hold
Expected result:
video appears, then freezes (separate bug)
Actual result:
InvalidSessionDescriptionError: track id:{133942a0-a162-5c4b-b57f-6b35d4218a99} appears in more than one m-section at level 2
The first fiddle in the "Evolution of WebRTC" blog [2] is broken the same way.
Basically, we believe this is caused by a broken JSEP spec. [1]
[1] https://github.com/rtcweb-wg/jsep/issues/842
[2] https://blog.mozilla.org/webrtc/the-evolution-of-webrtc/
Reporter | ||
Updated•8 years ago
|
Rank: 11
Reporter | ||
Comment 1•8 years ago
|
||
Also, InvalidSessionDescriptionError isn't in the spec. See [1].
[1] https://github.com/w3c/webrtc-pc/issues/1702
Rank: 11
Reporter | ||
Updated•8 years ago
|
Rank: 11
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Reporter | ||
Comment 5•8 years ago
|
||
mozreview-review |
Comment on attachment 8937584 [details]
Bug 1425956 - Part 1: Test-case that removes and re-adds a track that was negotiated previously.
https://reviewboard.mozilla.org/r/208258/#review214046
Lgtm modulo nits.
::: dom/media/tests/mochitest/test_peerConnection_transceivers.html:662
(Diff revision 1)
> + // pc1 is offerer
> + offer = await pc1.createOffer();
> + await pc2.setRemoteDescription(offer);
> + await pc1.setLocalDescription(offer);
> + answer = await pc2.createAnswer();
> + await pc1.setRemoteDescription(answer);
> + await pc2.setLocalDescription(answer);
Have you considered a reusable sub-function?
await negotiate(pc1, pc2);
::: dom/media/tests/mochitest/test_peerConnection_transceivers.html:703
(Diff revision 1)
> + }
> + ]);
> +
> + // pc1 is answerer. We need to create a new transceiver so pc1 will have
> + // something to attach the re-added track to
> + pc2.addTransceiver("audio");
This will fire a track event on pc1 after negotiation. Do we test that someplace else? If not, should we test it here?
::: dom/media/tests/mochitest/test_peerConnection_transceivers.html:723
(Diff revision 1)
> + {
> + receiver: {track: {}},
> + currentDirection: "inactive"
> + },
> + {
> + sender: {track: {}},
Isn't sender.track == null here?
Shouldn't we test receiver.track as well?
Attachment #8937584 -
Flags: review?(jib) → review+
Comment 6•8 years ago
|
||
mozreview-review |
Comment on attachment 8937585 [details]
Bug 1425956 - Part 2: Don't emit duplicate track ids in SDP.
https://reviewboard.mozilla.org/r/208260/#review214062
This looks good for one round of offer-answer. But I'm not convinced yet that it won't cause other interop problems.
::: media/webrtc/signaling/src/jsep/JsepSessionImpl.cpp:390
(Diff revision 1)
> + new SdpMsidAttributeList(mediaAttrs.GetMsid()));
> + for (auto& msid : newMsids->mMsids) {
> + msid.appdata = trackId;
> + }
> +
> + mediaAttrs.SetAttribute(newMsids.release());
Don't you need to this new IDs in a permanent lookup table to enable re-writing to the same fake track ID for every following renegotiation?
Or in other words: isn't this going to create new track IDs in new offer-answer round, which then will/might confuse a track based implementation?
Attachment #8937585 -
Flags: review?(drno) → review-
Comment 7•8 years ago
|
||
mozreview-review |
Comment on attachment 8937586 [details]
Bug 1425956 - Part 3: Remove duplicate track ids on incoming SDP.
https://reviewboard.mozilla.org/r/208262/#review214066
LGTM
Do we want additional JSEP unit tests for this to "describe" the expected behavior (given that this is not described in any spec as of right now)?
Attachment #8937586 -
Flags: review?(drno) → review+
Assignee | ||
Comment 8•8 years ago
|
||
mozreview-review-reply |
Comment on attachment 8937584 [details]
Bug 1425956 - Part 1: Test-case that removes and re-adds a track that was negotiated previously.
https://reviewboard.mozilla.org/r/208258/#review214046
> This will fire a track event on pc1 after negotiation. Do we test that someplace else? If not, should we test it here?
We have tested this in other places plenty.
> Isn't sender.track == null here?
>
> Shouldn't we test receiver.track as well?
What about receiver.track would we test? I suppose we could check the kind, but we already do that testing elsewhere.
Assignee | ||
Comment 9•8 years ago
|
||
mozreview-review-reply |
Comment on attachment 8937586 [details]
Bug 1425956 - Part 3: Remove duplicate track ids on incoming SDP.
https://reviewboard.mozilla.org/r/208262/#review214066
I don't know, maybe a test that inserts a dupe and just verifies that we don't barf?
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Comment hidden (mozreview-request) |
Reporter | ||
Comment 14•8 years ago
|
||
mozreview-review |
Comment on attachment 8937749 [details]
Bug 1425956 - Part 1.1: Fix flaw in hasProps noticed during review where {} would match null.
https://reviewboard.mozilla.org/r/208456/#review214250
Attachment #8937749 -
Flags: review?(jib) → review+
Comment 16•8 years ago
|
||
mozreview-review |
Comment on attachment 8937585 [details]
Bug 1425956 - Part 2: Don't emit duplicate track ids in SDP.
https://reviewboard.mozilla.org/r/208260/#review214340
Copying over the MSID from the last stable SDP hopefully solves my concern about renegotiation.
Attachment #8937585 -
Flags: review?(drno) → review+
Comment 17•8 years ago
|
||
Pushed by bcampen@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/76f26552f433
Part 1: Test-case that removes and re-adds a track that was negotiated previously. r=jib
https://hg.mozilla.org/integration/autoland/rev/ae1d83fc9eab
Part 1.1: Fix flaw in hasProps noticed during review where {} would match null. r=jib
https://hg.mozilla.org/integration/autoland/rev/a51a639d16c0
Part 2: Don't emit duplicate track ids in SDP. r=drno
https://hg.mozilla.org/integration/autoland/rev/8e682e487ef1
Part 3: Remove duplicate track ids on incoming SDP. r=drno
Comment 18•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/76f26552f433
https://hg.mozilla.org/mozilla-central/rev/ae1d83fc9eab
https://hg.mozilla.org/mozilla-central/rev/a51a639d16c0
https://hg.mozilla.org/mozilla-central/rev/8e682e487ef1
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Assignee | ||
Updated•8 years ago
|
Flags: needinfo?(docfaraday)
You need to log in
before you can comment on or make changes to this bug.
Description
•