Skip to content

Commit 9ab99e8

Browse files
authored
Dynamically read out request timeout in case settings are updated during runtime (Dash-Industry-Forum#4997)
* Dynamically read out request timeout in case settings are updated during runtime * Add an additional test to validate timeouts are updated
1 parent 9429315 commit 9ab99e8

5 files changed

Lines changed: 201 additions & 90 deletions

File tree

src/streaming/FragmentLoader.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ function FragmentLoader(config) {
5757
constants: Constants,
5858
boxParser: config.boxParser,
5959
dashConstants: config.dashConstants,
60-
requestTimeout: config.settings.get().streaming.fragmentRequestTimeout
6160
});
6261
}
6362

src/streaming/ManifestLoader.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ function ManifestLoader(config) {
7272
constants: Constants,
7373
dashConstants: DashConstants,
7474
errors: Errors,
75-
requestTimeout: config.settings.get().streaming.manifestRequestTimeout
7675
});
7776

7877
xlinkController = XlinkController(context).create({

src/streaming/net/HTTPLoader.js

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ function HTTPLoader(cfg) {
6464
const mediaPlayerModel = cfg.mediaPlayerModel;
6565
const boxParser = cfg.boxParser;
6666
const errors = cfg.errors;
67-
const requestTimeout = cfg.requestTimeout || 0;
6867
const eventBus = EventBus(context).getInstance();
6968
const settings = Settings(context).getInstance();
7069

@@ -367,6 +366,25 @@ function HTTPLoader(cfg) {
367366
}
368367
}
369368

369+
/**
370+
* Returns the request timeout value from Settings based on the request type.
371+
* This reads the value dynamically so that runtime changes via updateSettings() take effect.
372+
* @param {Object} requestObject
373+
* @returns {number}
374+
* @private
375+
*/
376+
function _getRequestTimeout(requestObject) {
377+
if (requestObject.type === HTTPRequest.MPD_TYPE) {
378+
return settings.get().streaming.manifestRequestTimeout || 0;
379+
}
380+
381+
if (_isFragmentRequest(requestObject)) {
382+
return settings.get().streaming.fragmentRequestTimeout || 0;
383+
}
384+
385+
return 0;
386+
}
387+
370388
// Main code after inline functions
371389
const requestObject = config.request;
372390
const traces = [];
@@ -407,7 +425,7 @@ function HTTPLoader(cfg) {
407425
responseType: requestObject.responseType,
408426
headers: requestObject.headers,
409427
credentials: withCredentials ? 'include' : 'omit',
410-
timeout: requestTimeout,
428+
timeout: _getRequestTimeout(requestObject),
411429
cmcd: cmcdModel.getCmcdData(requestObject),
412430
customData: { request: requestObject }
413431
});
@@ -454,6 +472,15 @@ function HTTPLoader(cfg) {
454472
}
455473
}
456474

475+
476+
function _isFragmentRequest(request) {
477+
return request && request.type === HTTPRequest.INIT_SEGMENT_TYPE ||
478+
request.type === HTTPRequest.INDEX_SEGMENT_TYPE ||
479+
request.type === HTTPRequest.MEDIA_SEGMENT_TYPE ||
480+
request.type === HTTPRequest.BITSTREAM_SWITCHING_SEGMENT_TYPE ||
481+
request.type === HTTPRequest.MSS_FRAGMENT_INFO_SEGMENT_TYPE;
482+
}
483+
457484
function _applyRequestInterceptors(httpRequest) {
458485
const interceptors = customParametersModel.getRequestInterceptors();
459486
if (!interceptors) {

src/streaming/net/URLLoader.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ function URLLoader(cfg) {
5959
constants: cfg.constants ? cfg.constants : null,
6060
dashConstants: cfg.dashConstants ? cfg.dashConstants : null,
6161
urlUtils: cfg.urlUtils ? cfg.urlUtils : null,
62-
requestTimeout: !isNaN(cfg.requestTimeout) ? cfg.requestTimeout : 0,
6362
errors: cfg.errors
6463
});
6564
}

0 commit comments

Comments
 (0)