|  | @@ -35,6 +35,7 @@ class DashSegmentsFD(FragmentFD):
 | 
	
		
			
				|  |  |          for frag_index, fragment in enumerate(fragments, 1):
 | 
	
		
			
				|  |  |              if frag_index <= ctx['fragment_index']:
 | 
	
		
			
				|  |  |                  continue
 | 
	
		
			
				|  |  | +            success = False
 | 
	
		
			
				|  |  |              # In DASH, the first segment contains necessary headers to
 | 
	
		
			
				|  |  |              # generate a valid MP4 file, so always abort for the first segment
 | 
	
		
			
				|  |  |              fatal = frag_index == 1 or not skip_unavailable_fragments
 | 
	
	
		
			
				|  | @@ -42,10 +43,14 @@ class DashSegmentsFD(FragmentFD):
 | 
	
		
			
				|  |  |              if not fragment_url:
 | 
	
		
			
				|  |  |                  assert fragment_base_url
 | 
	
		
			
				|  |  |                  fragment_url = urljoin(fragment_base_url, fragment['path'])
 | 
	
		
			
				|  |  | -            success = False
 | 
	
		
			
				|  |  | +            headers = info_dict.get('http_headers')
 | 
	
		
			
				|  |  | +            fragment_range = fragment.get('range')
 | 
	
		
			
				|  |  | +            if fragment_range:
 | 
	
		
			
				|  |  | +                headers = headers.copy() if headers else {}
 | 
	
		
			
				|  |  | +                headers['Range'] = 'bytes=%s' % (fragment_range,)
 | 
	
		
			
				|  |  |              for count in itertools.count():
 | 
	
		
			
				|  |  |                  try:
 | 
	
		
			
				|  |  | -                    success, frag_content = self._download_fragment(ctx, fragment_url, info_dict)
 | 
	
		
			
				|  |  | +                    success, frag_content = self._download_fragment(ctx, fragment_url, info_dict, headers)
 | 
	
		
			
				|  |  |                      if not success:
 | 
	
		
			
				|  |  |                          return False
 | 
	
		
			
				|  |  |                      self._append_fragment(ctx, frag_content)
 |