mirror of
				https://github.com/ytdl-org/youtube-dl
				synced 2025-10-31 01:33:15 +00:00 
			
		
		
		
	[compat] Fix old Pythons broken loading of valueless cookie attributes
Cookie string parsing in Py 2.6.9, probably earlier, requires `=`. Also 3.2, though the CPython code appears to be OK: 3.1 was also wrong.
This commit is contained in:
		
							parent
							
								
									1d8d5a93f7
								
							
						
					
					
						commit
						47214e46d8
					
				| @ -126,12 +126,24 @@ except ImportError:  # Python 2 | ||||
|     import Cookie as compat_cookies | ||||
| compat_http_cookies = compat_cookies | ||||
| 
 | ||||
| if sys.version_info[0] == 2: | ||||
| if sys.version_info[0] == 2 or sys.version_info < (3, 3): | ||||
|     class compat_cookies_SimpleCookie(compat_cookies.SimpleCookie): | ||||
|         def load(self, rawdata): | ||||
|             if isinstance(rawdata, compat_str): | ||||
|                 rawdata = str(rawdata) | ||||
|             return super(compat_cookies_SimpleCookie, self).load(rawdata) | ||||
|             must_have_value = 0 | ||||
|             if not isinstance(rawdata, dict): | ||||
|                 if sys.version_info[:2] != (2, 7): | ||||
|                     # attribute must have value for parsing | ||||
|                     rawdata, must_have_value = re.subn( | ||||
|                         r'(?i)(;\s*)(secure|httponly)(\s*(?:;|$))', r'\1\2=\2\3', rawdata) | ||||
|                 if sys.version_info[0] == 2: | ||||
|                     if isinstance(rawdata, compat_str): | ||||
|                         rawdata = str(rawdata) | ||||
|             super(compat_cookies_SimpleCookie, self).load(rawdata) | ||||
|             if must_have_value > 0: | ||||
|                 for morsel in self.values(): | ||||
|                     for attr in ('secure', 'httponly'): | ||||
|                         if morsel.get(attr): | ||||
|                             morsel[attr] = True | ||||
| else: | ||||
|     compat_cookies_SimpleCookie = compat_cookies.SimpleCookie | ||||
| compat_http_cookies_SimpleCookie = compat_cookies_SimpleCookie | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 dirkf
						dirkf