From 087c6e0e0526c8cf5f1c48684c0f0ee51fb0a94b Mon Sep 17 00:00:00 2001 From: Davide Bertola Date: Fri, 6 Mar 2020 11:33:55 +0100 Subject: [PATCH] stick to new dash manifest uri after http 302 redirection --- .../exoplayer2/source/dash/DashMediaSource.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java index 0e0a8c929f..53a28c2545 100644 --- a/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java +++ b/library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java @@ -791,6 +791,18 @@ public final class DashMediaSource extends BaseMediaSource { manifestLoadPending &= manifest.dynamic; manifestLoadStartTimestampMs = elapsedRealtimeMs - loadDurationMs; manifestLoadEndTimestampMs = elapsedRealtimeMs; + boolean isRedirect = !loadable.getUri().equals(this.manifestUri); + if (isRedirect) { + synchronized (manifestUriLock) { + // This condition checks that replaceManifestUri wasn't called between the start and end of + // this load. If it was, we ignore the manifest location and prefer the manual replacement. + @SuppressWarnings("ReferenceEquality") + boolean isSameUriInstance = loadable.dataSpec.uri == manifestUri; + if (isSameUriInstance) { + manifestUri = loadable.getUri(); + } + } + } if (manifest.location != null) { synchronized (manifestUriLock) { // This condition checks that replaceManifestUri wasn't called between the start and end of