Firefox incorrectly generates "a=setup" line in answer when negotiated DTLS role is "passive".
Categories
(Core :: WebRTC: Signaling, defect, P3)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox68 | --- | fixed |
People
(Reporter: deadbeef, Assigned: bwc)
Details
Attachments
(2 files)
| Reporter | ||
Updated•10 years ago
|
Comment 1•10 years ago
|
||
| Assignee | ||
Comment 2•10 years ago
|
||
| Reporter | ||
Comment 3•10 years ago
|
||
Comment 4•10 years ago
|
||
| Reporter | ||
Comment 5•10 years ago
|
||
Updated•10 years ago
|
| Reporter | ||
Comment 8•10 years ago
|
||
Comment 10•9 years ago
|
||
Comment 11•7 years ago
|
||
I believe this issue still relevant, and impacting interoperability. It's kind of hard to test in a succinct way (or perhaps I'm just not seasoned enough with WebRTC to know how to do this easily), but given this gist https://gist.github.com/argggh/677154f5001f1407c1f08e3d95e10de5 (run under node 10, with chromedriver@2.46.0, geckodriver@1.16.0 and selenium-webdriver@3.6.0, I observe the following behavior (output heavily edited):
*** Browser 1: Mozilla/5.0 (X11; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0
*** Browser 2: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
*** Initial offer from browser 1:
v=0
o=mozilla...THIS_IS_SDPARTA-67.0 37961081938154012 0 IN IP4 0.0.0.0
m=video 9 UDP/TLS/RTP/SAVPF 120 121
c=IN IP4 0.0.0.0
a=sendrecv
a=mid:0
a=msid:{e9b220ff-4c03-4386-9a56-cf0ac5d2e4f5} {a510f115-3beb-4ec9-b993-c1ffe73d77f2}
a=setup:actpass
*** Initial answer from browser 2:
v=0
o=- 6376292017037794710 2 IN IP4 127.0.0.1
m=video 9 UDP/TLS/RTP/SAVPF 120 121
a=setup:active
a=mid:0
a=recvonly
*** Connected
*** Add track offer from browser 2:
v=0
o=- 6376292017037794710 3 IN IP4 127.0.0.1
m=video 52309 UDP/TLS/RTP/SAVPF 120 121 97 99 100 101 102 122 127 119 125 107 108 109 124 118 123
a=setup:actpass
a=mid:0
a=sendrecv
a=msid:7cd8256b-dab0-4c0b-a65b-192c0d1b9b0a 88fc9367-ef2b-4d05-b0a9-620c100bfc47
*** Final answer from browser 1:
v=0
o=mozilla...THIS_IS_SDPARTA-67.0 37961081938154012 1 IN IP4 0.0.0.0
m=video 39126 UDP/TLS/RTP/SAVPF 120
a=sendrecv
a=mid:0
a=msid:{e9b220ff-4c03-4386-9a56-cf0ac5d2e4f5} {a510f115-3beb-4ec9-b993-c1ffe73d77f2}
a=setup:active
*** Result: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Failed to apply the description for 0: Failed to set SSL role for the transport.
So it seems Chrome 73 is unhappy that Firefox has switched to a=setup:active in its final answer. You can play around with browser combinations. Running the test chrome-chrome results in "OK", and you can see that the final answer contains a=setup:passive.
| Assignee | ||
Comment 12•7 years ago
|
||
Ok, there's two bits of silliness here. The first is the reoffer using actpass (it should be using active, although the JSEP spec is totally silent about a=setup in reoffers). The second is Firefox choosing active when there's already a DTLS transport negotiated. Let's just go ahead and fix this.
| Assignee | ||
Comment 13•7 years ago
•
|
||
The more I look at this, the more this looks underspecified. draft-jsep says nothing about a=setup for reoffers whatsoever, which is where most of the complexity lies:
- If not restarting ICE, must we reoffer the same role we negotiated last time?
- If reoffers must use the same role (unless restarting ICE), what about new m-sections that aren't bundle-only, and might end up with their own transport? Do those need to follow the example of the previously established transport, or can they go the other way?
| Assignee | ||
Comment 14•7 years ago
|
||
| Assignee | ||
Comment 15•7 years ago
|
||
| Assignee | ||
Comment 16•7 years ago
|
||
Depends on D24735
| Assignee | ||
Comment 17•7 years ago
|
||
| Assignee | ||
Comment 18•7 years ago
|
||
Comment 19•7 years ago
|
||
Comment 20•7 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/75fba0356211
https://hg.mozilla.org/mozilla-central/rev/7899cc839c4f
Comment 21•7 years ago
|
||
That's impressive turnaround. Thanks a lot, @bwc.
Description
•