From 0b03e7900bd28420e6b066f909a69ff511144471 Mon Sep 17 00:00:00 2001 From: Albert Daurell Date: Thu, 5 May 2022 20:10:05 +0200 Subject: [PATCH] fix: Do not report MANIFEST RESTRICTIONS_CANNOT_BE_MET error twice (#4194) We want to avoid reporting MANIFEST RESTRICTIONS_CANNOT_BE_MET error twice. This is because when error detected from `onKeyStatus_` calls `updateAbrManagerVariants_` which calls `checkRestrictedVariants_` and error is catched and propagated from `onError_` **but source code execution continues** and `chooseVariantAndSwitch_` triggers same error again: ```javascript onKeyStatus_() { .... if (tracksChanged) { this.updateAbrManagerVariants_(); // -> checkRestrictedVariants_ // -> RESTRICTIONS_CANNOT_BE_MET } ... if (currentVariant && !currentVariant.allowedByKeySystem) { ... this.chooseVariantAndSwitch_(); // -> chooseVariant_ // -> updateAbrManagerVariants_ // -> checkRestrictedVariants_ // -> RESTRICTIONS_CANNOT_BE_MET } ``` Closes #4190 --- lib/player.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/player.js b/lib/player.js index 21db088360..b18118bdf5 100644 --- a/lib/player.js +++ b/lib/player.js @@ -5679,7 +5679,10 @@ shaka.Player = class extends shaka.util.FakeEventTarget { } // if (keyIds.size) if (tracksChanged) { - this.updateAbrManagerVariants_(); + const variantsUpdated = this.updateAbrManagerVariants_(); + if (!variantsUpdated) { + return; + } } const currentVariant = this.streamingEngine_.getCurrentVariant();