Bug 1401461. P2 - don't call mChannelStatistics.AddBytes() if the data is from an old channel.
MozReview-Commit-ID: GIVwoGpo43R
--- a/dom/media/ChannelMediaResource.cpp
+++ b/dom/media/ChannelMediaResource.cpp
@@ -431,18 +431,23 @@ nsresult
ChannelMediaResource::OnDataAvailable(uint32_t aLoadID,
nsIInputStream* aStream,
uint32_t aCount)
{
// This might happen off the main thread.
RefPtr<ChannelMediaResource> self = this;
nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction(
- "ChannelMediaResource::OnDataAvailable",
- [self, aCount]() { self->mChannelStatistics.AddBytes(aCount); });
+ "ChannelMediaResource::OnDataAvailable", [self, aCount, aLoadID]() {
+ if (aLoadID != self->mLoadID) {
+ // Ignore data from the old channel.
+ return;
+ }
+ self->mChannelStatistics.AddBytes(aCount);
+ });
mCallback->AbstractMainThread()->Dispatch(r.forget());
Closure closure{ aLoadID, this };
uint32_t count = aCount;
while (count > 0) {
uint32_t read;
nsresult rv =
aStream->ReadSegments(CopySegmentToCache, &closure, count, &read);