projects
/
youtube-dl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[downloader/http] Fix 302 infinite loops by not reusing requests
[youtube-dl]
/
youtube_dl
/
downloader
/
http.py
diff --git
a/youtube_dl/downloader/http.py
b/youtube_dl/downloader/http.py
index dc2b37beb8eeef4ab72ee6a214c330e48479f888..6b4122f8ded84e7c3f632471537f5a511eb62a85 100644
(file)
--- 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)
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 (
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
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
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
# 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:
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
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
elif err.code < 500 or err.code >= 600:
# Unexpected HTTP error
raise