Skip to content

Commit bd74c80

Browse files
committed
Fix a bug that was adding CMCD parameters multiple times to the request URL in case of request retries
1 parent 7d0d1d0 commit bd74c80

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

src/streaming/ManifestUpdater.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import Errors from '../core/errors/Errors.js';
3737
import DashConstants from '../dash/constants/DashConstants.js';
3838
import URLUtils from './utils/URLUtils.js';
3939
import LocationSelector from './utils/LocationSelector.js';
40+
import Constants from './constants/Constants.js';
4041
import Utils from '../core/Utils.js';
4142

4243
function ManifestUpdater() {
@@ -157,7 +158,7 @@ function ManifestUpdater() {
157158

158159
// Remove previous CMCD parameters from URL
159160
if (url) {
160-
url = Utils.removeQueryParameterFromUrl(url, 'CMCD');
161+
url = Utils.removeQueryParameterFromUrl(url, Constants.CMCD_QUERY_KEY);
161162
}
162163

163164
// Check for PatchLocation and Location alternatives

src/streaming/constants/Constants.js

+8
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,14 @@ export default {
201201
*/
202202
TRACK_SELECTION_MODE_HIGHEST_SELECTION_PRIORITY: 'highestSelectionPriority',
203203

204+
205+
/**
206+
* @constant {string} CMCD_MODE_QUERY specifies to attach CMCD metrics as query parameters.
207+
* @memberof Constants#
208+
* @static
209+
*/
210+
CMCD_QUERY_KEY: 'CMCD',
211+
204212
/**
205213
* @constant {string} CMCD_MODE_QUERY specifies to attach CMCD metrics as query parameters.
206214
* @memberof Constants#

src/streaming/net/HTTPLoader.js

+2
Original file line numberDiff line numberDiff line change
@@ -625,10 +625,12 @@ function HTTPLoader(cfg) {
625625
const currentAdaptationSetId = request?.mediaInfo?.id?.toString();
626626
const isIncludedFilters = clientDataReportingController.isServiceLocationIncluded(request.type, currentServiceLocation) &&
627627
clientDataReportingController.isAdaptationsIncluded(currentAdaptationSetId);
628+
628629
if (isIncludedFilters && cmcdModel.isCmcdEnabled()) {
629630
const cmcdParameters = cmcdModel.getCmcdParametersFromManifest();
630631
const cmcdMode = cmcdParameters.mode ? cmcdParameters.mode : settings.get().streaming.cmcd.mode;
631632
if (cmcdMode === Constants.CMCD_MODE_QUERY) {
633+
request.url = Utils.removeQueryParameterFromUrl(request.url, Constants.CMCD_QUERY_KEY);
632634
const additionalQueryParameter = _getAdditionalQueryParameter(request);
633635
request.url = Utils.addAdditionalQueryParameterToUrl(request.url, additionalQueryParameter);
634636
} else if (cmcdMode === Constants.CMCD_MODE_HEADER) {

0 commit comments

Comments
 (0)