diff options
author | Sergey M․ <dstftw@gmail.com> | 2018-02-04 06:58:34 +0700 |
---|---|---|
committer | Sergey M․ <dstftw@gmail.com> | 2018-02-04 06:58:34 +0700 |
commit | cf7259bc931874318f8abe142a89914b41b49236 (patch) | |
tree | 3fa2c58203a939b8675922b55399cb69d4df0876 | |
parent | b54d4a5ce8443488dbb6735b0ea3e1b9cd6d72f7 (diff) |
[downloader/http] Fix 302 infinite loops by not reusing requests
-rw-r--r-- | youtube_dl/downloader/http.py | 12 |
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 |