mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[networking] Fix POST requests with zero-length payloads (#7648)
Bugfix for 227bf1a33b
Authored by: bashonly
			
			
This commit is contained in:
		| @@ -1280,6 +1280,17 @@ class TestRequest: | ||||
|         req.data = b'test3' | ||||
|         assert req.headers.get('Content-Type') == 'application/x-www-form-urlencoded' | ||||
| 
 | ||||
|     def test_update_req(self): | ||||
|         req = Request('http://example.com') | ||||
|         assert req.data is None | ||||
|         assert req.method == 'GET' | ||||
|         assert 'Content-Type' not in req.headers | ||||
|         # Test that zero-byte payloads will be sent | ||||
|         req.update(data=b'') | ||||
|         assert req.data == b'' | ||||
|         assert req.method == 'POST' | ||||
|         assert req.headers.get('Content-Type') == 'application/x-www-form-urlencoded' | ||||
| 
 | ||||
|     def test_proxies(self): | ||||
|         req = Request(url='http://example.com', proxies={'http': 'http://127.0.0.1:8080'}) | ||||
|         assert req.proxies == {'http': 'http://127.0.0.1:8080'} | ||||
|   | ||||
| @@ -41,7 +41,7 @@ class EttuTvIE(InfoExtractor): | ||||
|                 'device': 'desktop', | ||||
|             }) | ||||
| 
 | ||||
|         stream_response = self._download_json(player_settings['streamAccess'], video_id, data={}) | ||||
|         stream_response = self._download_json(player_settings['streamAccess'], video_id, data=b'') | ||||
| 
 | ||||
|         formats, subtitles = self._extract_m3u8_formats_and_subtitles( | ||||
|             stream_response['data']['stream'], video_id, 'mp4') | ||||
|   | ||||
| @@ -315,7 +315,7 @@ class HEADRequest(urllib.request.Request): | ||||
| def update_Request(req, url=None, data=None, headers=None, query=None): | ||||
|     req_headers = req.headers.copy() | ||||
|     req_headers.update(headers or {}) | ||||
|     req_data = data or req.data | ||||
|     req_data = data if data is not None else req.data | ||||
|     req_url = update_url_query(url or req.get_full_url(), query) | ||||
|     req_get_method = req.get_method() | ||||
|     if req_get_method == 'HEAD': | ||||
|   | ||||
| @@ -425,7 +425,7 @@ class Request: | ||||
|             raise TypeError('headers must be a mapping') | ||||
| 
 | ||||
|     def update(self, url=None, data=None, headers=None, query=None): | ||||
|         self.data = data or self.data | ||||
|         self.data = data if data is not None else self.data | ||||
|         self.headers.update(headers or {}) | ||||
|         self.url = update_url_query(url or self.url, query or {}) | ||||
| 
 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bashonly
					bashonly