gh-105626: Change the default return value of `HTTPConnection.get_proxy_response_headers` (#105628)

This commit is contained in:
Nikita Sobolev 2023-07-14 09:55:49 +03:00 committed by GitHub
parent 025995fead
commit 490295d651
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 19 additions and 4 deletions

View File

@ -390,7 +390,7 @@ HTTPConnection Objects
Returns a dictionary with the headers of the response received from
the proxy server to the CONNECT request.
If the CONNECT request was not sent, the method returns an empty dictionary.
If the CONNECT request was not sent, the method returns ``None``.
.. versionadded:: 3.12

View File

@ -970,13 +970,12 @@ class HTTPConnection:
received from the proxy server to the CONNECT request
sent to set the tunnel.
If the CONNECT request was not sent, the method returns
an empty dictionary.
If the CONNECT request was not sent, the method returns None.
"""
return (
_parse_header_lines(self._raw_proxy_headers)
if self._raw_proxy_headers is not None
else {}
else None
)
def connect(self):

View File

@ -2404,6 +2404,19 @@ class TunnelTests(TestCase):
headers = self.conn.get_proxy_response_headers()
self.assertIn(expected_header, headers.items())
def test_no_proxy_response_headers(self):
expected_header = ('X-Dummy', '1')
response_text = (
'HTTP/1.0 200 OK\r\n'
'{0}\r\n\r\n'.format(':'.join(expected_header))
)
self.conn._create_connection = self._create_connection(response_text)
self.conn.request('PUT', '/', '')
headers = self.conn.get_proxy_response_headers()
self.assertIsNone(headers)
def test_tunnel_leak(self):
sock = None

View File

@ -0,0 +1,3 @@
Change the default return value of
:meth:`http.client.HTTPConnection.get_proxy_response_headers` to be ``None``
and not ``{}``.