- From: Byron Campen <docfaraday@gmail.com>
- Date: Thu, 24 Aug 2017 09:45:04 -0500
- To: Iñaki Baz Castillo <ibc@aliax.net>, "public-webrtc@w3.org" <public-webrtc@w3.org>
On 8/24/17 6:32 AM, Iñaki Baz Castillo wrote:
> Hi,
>
> A PeerConnection in a browser (let's call it Mozilla XXXXXXX or
> XXXXXXX Firefox to keep it anonymous) is sending audio and video using
> BUNDLE (a single ICE+DLTS transport).
>
> Eventually, the app removes/closes/stops the audio RtpSender. The app
> may (or not) does the SDP O/A ceremony (createOffer,
> setLocalDescription, setRemoteDescription). Same happens:
>
> The PeerConnection stops sending video RTP packets.
Yeah, that shouldn't happen. Stopping the audio sender should only
stop RTP/RTCP. The transport should not be affected in any way until
renegotiation happens, and then we should establish a new transport and
switch over to it.
>
> The ICE+DTLS remains connected (pc.iceConnectionState did not change
> at all and remains "completed"). So this must be a BUNDLE
> implementation issue. My question is, how is this supposed to work?
>
> Initially, when both audio and video are being sent,
> pc.localDescription.sdp has 2 m= lines with a=mid=MID1 and a=mid=MID2,
> both a=sendrecv. And the SDP has a global "a=group:BUNDLE MID1 MID2".
> The SDP answer looks similar.
>
> However, once the audio sender is stopped/closed/removed, and the SDP
> O/A is done, pc.localDescription.sdp has no "a=group:BUNDLE" line, the
> m=audio section no longer has a=mid, has a=inactive and port 0.
>
> Well, that's expected. However the m=video remains with a=sendrecv and
> the ICE+DTLS stuff remains connected. I assume this is a bug in this
> browser, which terribly makes the transport depend on active m=
> sections (although the SDP semantics do not help here).
Is it still using the old transport? Or has it created a new one?
>
> Anyhow, what should happen in this scenario?:
>
> * Should the browser realize that its new local offer should use the
> previous BUNDLED transport even if now there is no bundle stuff in the
> SDP?
I don't think this is a good thing to do. We may be doing this, and
if so should stop. I think the rule we should be following is "the
transport follows the m-section". In other words, if the bundle tag
changes (either because the bundle tag is disabled, or another m-section
is made the bundle tag), we stop using that transport once O/A is done.
If a bundle tag is removed from a bundle group, but not disabled, it
will keep the old bundle transport, and the stuff remaining in the
bundle will need to create a new transport.
> * Should the currently inactive m=audio section still contain its
> previous DTLS/ICE parameters/candidates?
Probably not, but nothing should care.
> * Should a=group:BUNDLE still exist and contain MID1 (now inactive) and MID2?
No. We should not be putting a dead mid in a group attribute.
> * Why the hell do we still place *shared* transport parameters within
> each media sender/receiver section?
I think this might be a holdover from an earlier version of the
bundle spec? Or maybe an interop workaround? I would have to do some
digging.
Best regards,
Byron Campen
Received on Thursday, 24 August 2017 14:45:28 UTC