mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-30 22:25:19 +00:00 
			
		
		
		
	[downloader/http] Clarify rationale for Content-Range check (#6426)
This commit is contained in:
		| @@ -58,14 +58,21 @@ class HttpFD(FileDownloader): | ||||
|             # Establish connection | ||||
|             try: | ||||
|                 data = self.ydl.urlopen(request) | ||||
|                 # When trying to resume, Content-Range HTTP header of response has to be checked | ||||
|                 # to match the value of requested Range HTTP header. This is due to a webservers | ||||
|                 # that don't support resuming and serve a whole file with no Content-Range | ||||
|                 # set in response despite of requested Range (see | ||||
|                 # https://github.com/rg3/youtube-dl/issues/6057#issuecomment-126129799) | ||||
|                 if resume_len > 0: | ||||
|                     content_range = data.headers.get('Content-Range') | ||||
|                     if content_range: | ||||
|                         content_range_m = re.search(r'bytes (\d+)-', content_range) | ||||
|                         # Content-Range is correct - go on | ||||
|                     if content_range_m and resume_len == int(content_range_m.group(1)): | ||||
|                         break | ||||
|                     # Content-Range is invalid - wipe the file and do entire redownload | ||||
|                         # Content-Range is present and matches requested Range, resume is possible | ||||
|                         if content_range_m and resume_len == int(content_range_m.group(1)): | ||||
|                             break | ||||
|                     # Content-Range is either not present or invalid. Assuming remote webserver is | ||||
|                     # trying to send the whole file, resume is not possible, so wiping the local file | ||||
|                     # and performing entire redownload | ||||
|                     self.report_unable_to_resume() | ||||
|                     resume_len = 0 | ||||
|                     open_mode = 'wb' | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sergey M․
					Sergey M․