New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 722514 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 3
Type: Bug


Previous locations:
webrtc:7657


Sign in to add a comment

setLocalDescription fails when previous BUNDLE-tag m= section is rejected in subsequent offer

Reported by ushunmu...@gmail.com, May 12 2017

Issue description

What steps will reproduce the problem?
1. Establish an audio + video call between a Chrome WebRTC client and a peer.
2. Have the peer send a new offer with the audio m-line disabled (port set to 0), say, for downgrading it to a video-only call.  The offer should still contain "a=group:BUNDLE video" following RFC 5888.
3. Do setRemoteDescription in Chrome client with the remoteSDP, create the answer SDP, and then do setLocalDescription with the answer.

What is the expected result?
setLocalDescription succeeds.

What do you see instead?
setLocalDescription fails with the following error: "Failed to push down transport description: Applying an answer transport description without applying any offer".

What version of the product are you using? On what operating system?
Version 58.0.3029.96 (64-bit)  - on Windows 10 Enterprise

Please provide any additional information below.

    The offer to downgrade to video-only looks like this:
...
a=group:BUNDLE video
a=msid-semantic: WMS 8125B60C-2E2F-4E86-A34C-49C23AC6D9BC
m=audio 0 RTP/SAVPF 0
m=video 36001 RTP/SAVPF 96
...
a=mid:video
...

   The answer generated by Chrome looks like this:
...
a=group:BUNDLE video
a=msid-semantic: WMS lFfzLGmvkwNrM4CVhnTvWMH7opHOj1WKSoyC
m=audio 0 RTP/SAVPF 0
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=mid:audio
a=sendrecv
a=rtpmap:0 PCMU/8000
a=ssrc:3250779170 cname:MFt1g9taool4VPgZ
a=ssrc:3250779170 msid:lFfzLGmvkwNrM4CVhnTvWMH7opHOj1WKSoyC 6425a00f-1b45-4e18-820c-9c9df812326a
a=ssrc:3250779170 mslabel:lFfzLGmvkwNrM4CVhnTvWMH7opHOj1WKSoyC
a=ssrc:3250779170 label:6425a00f-1b45-4e18-820c-9c9df812326a
m=video 61490 RTP/SAVPF 96
...
a=mid:video
...
 
Note, setRemoteDescription of the new offer, as well as createAnswer succeeds, so the part of error message "Applying an answer transport description without applying any offer" does not even make sense.

FYI, if the "a=group:BUNDLE" line is removed from the offer (or kept, but without any mid values), then setLocalDescription fails with a different error (I would create a new issue for that):
"Session error code: ERROR_CONTENT. Session error description: Failed to setup SRTP filter.."

The same issue is exhibited in Canary - Version 60.0.3097.0 (Official Build) canary (64-bit).
Project: chromium
Moved issue webrtc:7657 to now be issue chromium:722514.
Components: Blink>WebRTC>PeerConnection
Labels: OS-Windows
Labels: Needs-Triage-M58

Comment 6 by guidou@chromium.org, May 16 2017

Components: -Blink>WebRTC>PeerConnection Blink>WebRTC>Network
With media bundle, when audio gets disabled, Chrome cannot seem to handle the video stream (I guess ICE should be redone here).  The error message still doesn't make sense to me.  See the attached file with the chrome debug log.
chrome_debug-error_on_disabled_audiolog.txt
14.2 KB View Download
Labels: TE-NeedsTriageHelp
Ping for triage.
Labels: WebRTCTriaged
Status: Available (was: Unconfirmed)
Summary: setLocalDescription fails when previous BUNDLE-tag m= section is rejected in subsequent offer (was: setLocalDescription fails when MID of a disabled m-line is not in a=group line of the SDP)
Sorry for the delay, but yes, this is a known issue. A more general statement of the issue is that we don't support rejecting the "bundle transport" m= section in a subsequent offer. The way we implement bundling is by having transports identified by MIDs. So pre-bundling, things look like:

VoiceChannel -> "audio" transport
VideoChannel -> "video" transport

Then when an answer is applied, the VideoChannel starts pointing at the "audio" transport, because "audio" is the first thing in "a=group":

VoiceChannel -> "audio" transport
VideoChannel /

Finally, when an offer that rejects the "audio" section is applied, the "audio" transport is destroyed. Then when the answer is applied, things start pointing to the nonexistent "video" transport instead. Which is why you get the un-intuitive "Applying an answer transport description without applying any offer" message.

To fix this, we need some logic that says "this BUNDLE group in the re-offer is the same group as the previous answer, even though the BUNDLE-tag changed", and do something smarter than simply identifying transports by name. Rejecting the "audio" section shouldn't destroy the "audio" transport, because it's not just the audio transport any more; it's the BUNDLE group transport.
Project Member

Comment 11 by sheriffbot@chromium.org, Jul 11

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Hotlist-Recharge-Cold -TE-NeedsTriageHelp -Needs-Triage-M58
Status: Available (was: Untriaged)
Still an issue.
Labels: -Pri-2 Pri-3
Bumping to P3.

Sign in to add a comment