aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/downloader
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2018-02-04 06:58:34 +0700
committerSergey M․ <dstftw@gmail.com>2018-02-04 06:58:34 +0700
commitcf7259bc931874318f8abe142a89914b41b49236 (patch)
tree3fa2c58203a939b8675922b55399cb69d4df0876 /youtube_dl/downloader
parentb54d4a5ce8443488dbb6735b0ea3e1b9cd6d72f7 (diff)
[downloader/http] Fix 302 infinite loops by not reusing requests
Diffstat (limited to 'youtube_dl/downloader')
-rw-r--r--youtube_dl/downloader/http.py12
1 files changed, 3 insertions, 9 deletions
diff --git a/youtube_dl/downloader/http.py b/youtube_dl/downloader/http.py
index dc2b37beb..6b4122f8d 100644
--- a/youtube_dl/downloader/http.py
+++ b/youtube_dl/downloader/http.py
@@ -42,8 +42,6 @@ class HttpFD(FileDownloader):
add_headers = info_dict.get('http_headers')
if add_headers:
headers.update(add_headers)
- basic_request = sanitized_Request(url, None, headers)
- request = sanitized_Request(url, None, headers)
is_test = self.params.get('test', False)
chunk_size = self._TEST_FILE_SIZE if is_test else (
@@ -98,6 +96,7 @@ class HttpFD(FileDownloader):
range_end = ctx.data_len - 1
has_range = range_start is not None
ctx.has_range = has_range
+ request = sanitized_Request(url, None, headers)
if has_range:
set_range(request, range_start, range_end)
# Establish connection
@@ -140,7 +139,8 @@ class HttpFD(FileDownloader):
# Unable to resume (requested range not satisfiable)
try:
# Open the connection again without the range header
- ctx.data = self.ydl.urlopen(basic_request)
+ ctx.data = self.ydl.urlopen(
+ sanitized_Request(url, None, headers))
content_length = ctx.data.info()['Content-Length']
except (compat_urllib_error.HTTPError, ) as err:
if err.code < 500 or err.code >= 600:
@@ -171,12 +171,6 @@ class HttpFD(FileDownloader):
ctx.resume_len = 0
ctx.open_mode = 'wb'
return
- elif err.code == 302:
- if not chunk_size:
- raise
- # HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
- # may happen during chunk downloading. This is usually fixed
- # with a retry.
elif err.code < 500 or err.code >= 600:
# Unexpected HTTP error
raise