Bug 1493689 - Defer close of old stream after ICE restart. r=mjf

Differential Revision: https://phabricator.services.mozilla.com/D7626

--HG--
extra : rebase_source : d842ee5e65330177afc3d215f94ef69ab800412b
This commit is contained in:
Byron Campen [:bwc] 2018-10-04 21:30:22 -04:00
Родитель f194bb0339
Коммит ca982a9fae
2 изменённых файлов: 20 добавлений и 2 удалений

Просмотреть файл

@ -46,6 +46,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "logging.h"
#include "nsError.h"
#include "nsThreadUtils.h"
// nICEr includes
extern "C" {
@ -657,7 +658,11 @@ void NrIceMediaStream::Ready() {
if (state_ != ICE_OPEN) {
MOZ_MTLOG(ML_DEBUG, "Marking stream ready '" << name_ << "'");
state_ = ICE_OPEN;
CloseStream(&old_stream_);
NS_DispatchToCurrentThread(NewRunnableMethod<nr_ice_media_stream*>(
"NrIceMediaStream::DeferredCloseOldStream",
this,
&NrIceMediaStream::DeferredCloseOldStream,
old_stream_));
SignalReady(this);
}
else {
@ -670,7 +675,11 @@ void NrIceMediaStream::Failed() {
MOZ_MTLOG(ML_DEBUG, "Marking stream failed '" << name_ << "'");
state_ = ICE_CLOSED;
// We don't need the old stream anymore.
CloseStream(&old_stream_);
NS_DispatchToCurrentThread(NewRunnableMethod<nr_ice_media_stream*>(
"NrIceMediaStream::DeferredCloseOldStream",
this,
&NrIceMediaStream::DeferredCloseOldStream,
old_stream_));
SignalFailed(this);
}
}
@ -696,4 +705,12 @@ NrIceMediaStream::CloseStream(nr_ice_media_stream **stream)
}
}
void
NrIceMediaStream::DeferredCloseOldStream(const nr_ice_media_stream *old)
{
if (old == old_stream_) {
CloseStream(&old_stream_);
}
}
} // close namespace

Просмотреть файл

@ -221,6 +221,7 @@ class NrIceMediaStream {
DISALLOW_COPY_ASSIGN(NrIceMediaStream);
void CloseStream(nr_ice_media_stream **stream);
void DeferredCloseOldStream(const nr_ice_media_stream *old);
State state_;
nr_ice_ctx *ctx_;