From 08589e8fb27f3f73f64204e7d3a2387f3c197d84 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 3dcbded10d..45a4e8f61f 100644 --- a/lib/player.js +++ b/lib/player.js @@ -5766,7 +5766,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();