Skip to content

Commit 0540c48

Browse files
committed
Find escape in AES key loading (revert/remove before merging)
1 parent a9bc232 commit 0540c48

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/controller/base-stream-controller.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -839,15 +839,17 @@ export default class BaseStreamController
839839
);
840840
this.state = State.KEY_LOADING;
841841
this.fragCurrent = frag;
842-
keyLoadingPromise = this.keyLoader.load(frag).then((keyLoadedData) => {
843-
if (!this.fragContextChanged(keyLoadedData.frag)) {
844-
this.hls.trigger(Events.KEY_LOADED, keyLoadedData);
845-
if (this.state === State.KEY_LOADING) {
846-
this.state = State.IDLE;
842+
keyLoadingPromise = Promise.resolve().then(() =>
843+
this.keyLoader.load(frag).then((keyLoadedData) => {
844+
if (!this.fragContextChanged(keyLoadedData.frag)) {
845+
this.hls.trigger(Events.KEY_LOADED, keyLoadedData);
846+
if (this.state === State.KEY_LOADING) {
847+
this.state = State.IDLE;
848+
}
849+
return keyLoadedData;
847850
}
848-
return keyLoadedData;
849-
}
850-
});
851+
}),
852+
);
851853
this.hls.trigger(Events.KEY_LOADING, { frag });
852854
if ((this.fragCurrent as Fragment | null) === null) {
853855
this.log(`context changed in KEY_LOADING`);

src/loader/key-loader.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
keySystemFormatToKeySystemDomain,
99
} from '../utils/mediakeys-helper';
1010
import { KeySystemFormats } from '../utils/mediakeys-helper';
11+
import { stringify } from '../utils/safe-json-stringify';
1112
import type { LevelKey } from './level-key';
1213
import type { HlsConfig } from '../config';
1314
import type EMEController from '../controller/eme-controller';
@@ -148,6 +149,9 @@ export default class KeyLoader extends Logger implements ComponentAPI {
148149
}
149150

150151
load(frag: Fragment): Promise<KeyLoadedData> {
152+
this.log(
153+
`load key for sn: ${frag.type} level: ${frag.level} decryptdata: ${frag.decryptdata} encrypted: ${frag.encrypted} emeEnabled: ${this.config?.emeEnabled} emeController: ${this.emeController}`,
154+
);
151155
if (
152156
!frag.decryptdata &&
153157
frag.encrypted &&
@@ -169,6 +173,7 @@ export default class KeyLoader extends Logger implements ComponentAPI {
169173
frag: Fragment,
170174
keySystemFormat?: KeySystemFormats,
171175
): Promise<KeyLoadedData> {
176+
this.log(`loadInternal: keySystemFormat: ${keySystemFormat}`);
172177
if (keySystemFormat) {
173178
frag.setKeyFormat(keySystemFormat);
174179
}
@@ -183,6 +188,7 @@ export default class KeyLoader extends Logger implements ComponentAPI {
183188
this.createKeyLoadError(frag, ErrorDetails.KEY_LOAD_ERROR, error),
184189
);
185190
}
191+
this.log(`decryptdata.uri: ${decryptdata.uri}`);
186192
const uri = decryptdata.uri;
187193
if (!uri) {
188194
return Promise.reject(
@@ -195,6 +201,7 @@ export default class KeyLoader extends Logger implements ComponentAPI {
195201
}
196202
const id = getKeyId(decryptdata);
197203
let keyInfo = this.keyIdToKeyInfo[id];
204+
this.log(`id: ${id} ${stringify(keyInfo)}`);
198205

199206
if (keyInfo?.decryptdata.key) {
200207
decryptdata.key = keyInfo.decryptdata.key;
@@ -282,6 +289,7 @@ export default class KeyLoader extends Logger implements ComponentAPI {
282289
const Loader = config.loader;
283290
const keyLoader = new Loader(config) as Loader<KeyLoaderContext>;
284291
frag.keyLoader = keyInfo.loader = keyLoader;
292+
this.log(`HTTP key request ${keyInfo.decryptdata.uri}`);
285293

286294
return (keyInfo.keyLoadPromise = new Promise((resolve, reject) => {
287295
const loaderContext: KeyLoaderContext = {

0 commit comments

Comments
 (0)