Skip to content

Commit be7bfb8

Browse files
author
Daniel Nelson
committed
Don't add Content-Encoding and Transfer-Encoding if no body
1 parent be9a084 commit be7bfb8

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

aiohttp/client_reqrep.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def __init__(self, method, url, *,
8989
self.update_headers(headers)
9090
self.update_auto_headers(skip_auto_headers)
9191
self.update_cookies(cookies)
92-
self.update_content_encoding()
92+
self.update_content_encoding(data)
9393
self.update_auth(auth)
9494

9595
self.update_body_from_data(data, skip_auto_headers)
@@ -230,8 +230,11 @@ def update_cookies(self, cookies):
230230

231231
self.headers[hdrs.COOKIE] = c.output(header='', sep=';').strip()
232232

233-
def update_content_encoding(self):
233+
def update_content_encoding(self, data):
234234
"""Set request content encoding."""
235+
if not data:
236+
return
237+
235238
enc = self.headers.get(hdrs.CONTENT_ENCODING, '').lower()
236239
if enc:
237240
if self.compress is not False:

tests/test_client_request.py

+12-2
Original file line numberDiff line numberDiff line change
@@ -528,7 +528,7 @@ def test_bytes_data(self):
528528

529529
@unittest.mock.patch('aiohttp.client_reqrep.aiohttp')
530530
def test_content_encoding(self, m_http):
531-
req = ClientRequest('get', 'http://python.org/',
531+
req = ClientRequest('get', 'http://python.org/', data='foo',
532532
compress='deflate', loop=self.loop)
533533
resp = req.send(self.transport, self.protocol)
534534
self.assertEqual(req.headers['TRANSFER-ENCODING'], 'chunked')
@@ -538,10 +538,20 @@ def test_content_encoding(self, m_http):
538538
self.loop.run_until_complete(req.close())
539539
resp.close()
540540

541+
@unittest.mock.patch('aiohttp.client_reqrep.aiohttp')
542+
def test_content_encoding_dont_set_headers_if_no_body(self, m_http):
543+
req = ClientRequest('get', 'http://python.org/',
544+
compress='deflate', loop=self.loop)
545+
resp = req.send(self.transport, self.protocol)
546+
self.assertNotIn('TRANSFER-ENCODING', req.headers)
547+
self.assertNotIn('CONTENT-ENCODING', req.headers)
548+
self.loop.run_until_complete(req.close())
549+
resp.close()
550+
541551
@unittest.mock.patch('aiohttp.client_reqrep.aiohttp')
542552
def test_content_encoding_header(self, m_http):
543553
req = ClientRequest(
544-
'get', 'http://python.org/',
554+
'get', 'http://python.org/', data='foo',
545555
headers={'Content-Encoding': 'deflate'}, loop=self.loop)
546556
resp = req.send(self.transport, self.protocol)
547557
self.assertEqual(req.headers['TRANSFER-ENCODING'], 'chunked')

0 commit comments

Comments
 (0)