From 03bafc69ec59731fb3971fb19aa903c12849d2a9 Mon Sep 17 00:00:00 2001 From: Rob Walch Date: Mon, 3 Jul 2023 11:45:01 -0700 Subject: [PATCH] Reset loading start on worker setup error Fixes #5617 --- src/controller/base-stream-controller.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/controller/base-stream-controller.ts b/src/controller/base-stream-controller.ts index bddf5ccf0d7..4034f9589be 100644 --- a/src/controller/base-stream-controller.ts +++ b/src/controller/base-stream-controller.ts @@ -1493,10 +1493,7 @@ export default class BaseStreamController action === NetworkErrorAction.RetryRequest && retryConfig ) { - if (!this.loadedmetadata) { - this.startFragRequested = false; - this.nextLoadPosition = this.startPosition; - } + this.resetStartWhenNotLoaded(this.levelLastLoaded ?? frag.level); const delay = getRetryDelay(retryConfig, retryCount); this.warn( `Fragment ${frag.sn} of ${filterType} ${frag.level} errored with ${ @@ -1633,7 +1630,7 @@ export default class BaseStreamController `The loading context changed while buffering fragment ${chunkMeta.sn} of level ${chunkMeta.level}. This chunk will not be buffered.` ); this.removeUnbufferedFrags(); - this.resetStartWhenNotLoaded(chunkMeta.level); + this.resetStartWhenNotLoaded(this.levelLastLoaded ?? chunkMeta.level); this.resetLoadingState(); } @@ -1731,7 +1728,11 @@ export default class BaseStreamController protected recoverWorkerError(data: ErrorData) { if (data.event === 'demuxerWorker') { + this.fragmentTracker.removeAllFragments(); this.resetTransmuxer(); + this.resetStartWhenNotLoaded( + this.levelLastLoaded ?? this.fragCurrent?.level ?? 0 + ); this.resetLoadingState(); } }