Subject: Re: [rtcweb] Handling system suspend during an active call

From: Justin Uberti <[email-masked]>
Date: Thu, 7 Aug 2014 12:31:45 -0700

When screen-sharing in a video conference, it's quite common for the
screen-sharing user to stop sharing by closing their laptop. However, when
this happens, the browser doesn't give the application or MCU any
indication, leading to zombie participants in the conference. (Of course,
the MCU will stop receiving packets, but as that could also happen due to
transient connectivity issues, we don't want to eject the user upon a brief
interruption of RTP packets).

One way to deal with this would be for the browser, upon receipt of a
suspend notification from the OS, to send an indication that would let the
MCU know that the stream is officially terminating. This has to be done by
the browser, since the application doesn't get any such notification. For
example, the browser could send RTCP BYE for all active RTP streams and
terminate any outstanding SCTP associations. While this is different than
how the browser treats HTTP connections on suspend, it makes sense in this
case because the session really can't be resumed after suspend, as ICE
consent will have disappeared within a minute. Alternatively, if we wanted
to allow resumption, the browser could send RTCP PAUSED
<http://tools.ietf.org/html/draft-ietf-avtext-rtp-stream-pause-02#section-8.2>
indication
(via TMMBN 0) instead.

Receipt of BYE/PAUSED message prior to RTP packets ceasing would tell the
remote side that the sender intentionally stopped the flow, instead of
falling off the Internet. While not perfect, this seems like a simple
solution that avoids the complexities of trying to expose power events
directly to the application.