From 565e9e0191cab88094aaa15cd3ae90cef00ffdc3 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 f1c0ca4bbc..2ab3d184b5 100644 --- a/lib/player.js +++ b/lib/player.js @@ -5862,7 +5862,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();