mirror of
https://github.com/python/cpython.git
synced 2025-09-19 07:00:59 +00:00
Issue #13128: Print response headers for CONNECT requests when debuglevel > 0.
Patch by Demian Brecht.
This commit is contained in:
parent
50457403f2
commit
ab53ab0a84
3 changed files with 24 additions and 5 deletions
|
@ -776,6 +776,9 @@ class HTTPConnection:
|
||||||
if line in (b'\r\n', b'\n', b''):
|
if line in (b'\r\n', b'\n', b''):
|
||||||
break
|
break
|
||||||
|
|
||||||
|
if self.debuglevel > 0:
|
||||||
|
print('header:', line.decode())
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
"""Connect to the host and port specified in __init__."""
|
"""Connect to the host and port specified in __init__."""
|
||||||
self.sock = self._create_connection(
|
self.sock = self._create_connection(
|
||||||
|
|
|
@ -1269,17 +1269,18 @@ class TunnelTests(TestCase):
|
||||||
'HTTP/1.1 200 OK\r\n' # Reply to HEAD
|
'HTTP/1.1 200 OK\r\n' # Reply to HEAD
|
||||||
'Content-Length: 42\r\n\r\n'
|
'Content-Length: 42\r\n\r\n'
|
||||||
)
|
)
|
||||||
|
|
||||||
def create_connection(address, timeout=None, source_address=None):
|
|
||||||
return FakeSocket(response_text, host=address[0], port=address[1])
|
|
||||||
|
|
||||||
self.host = 'proxy.com'
|
self.host = 'proxy.com'
|
||||||
self.conn = client.HTTPConnection(self.host)
|
self.conn = client.HTTPConnection(self.host)
|
||||||
self.conn._create_connection = create_connection
|
self.conn._create_connection = self._create_connection(response_text)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
self.conn.close()
|
self.conn.close()
|
||||||
|
|
||||||
|
def _create_connection(self, response_text):
|
||||||
|
def create_connection(address, timeout=None, source_address=None):
|
||||||
|
return FakeSocket(response_text, host=address[0], port=address[1])
|
||||||
|
return create_connection
|
||||||
|
|
||||||
def test_set_tunnel_host_port_headers(self):
|
def test_set_tunnel_host_port_headers(self):
|
||||||
tunnel_host = 'destination.com'
|
tunnel_host = 'destination.com'
|
||||||
tunnel_port = 8888
|
tunnel_port = 8888
|
||||||
|
@ -1320,6 +1321,18 @@ class TunnelTests(TestCase):
|
||||||
self.assertIn(b'CONNECT destination.com', self.conn.sock.data)
|
self.assertIn(b'CONNECT destination.com', self.conn.sock.data)
|
||||||
self.assertIn(b'Host: destination.com', self.conn.sock.data)
|
self.assertIn(b'Host: destination.com', self.conn.sock.data)
|
||||||
|
|
||||||
|
def test_tunnel_debuglog(self):
|
||||||
|
expected_header = 'X-Dummy: 1'
|
||||||
|
response_text = 'HTTP/1.0 200 OK\r\n{}\r\n\r\n'.format(expected_header)
|
||||||
|
|
||||||
|
self.conn.set_debuglevel(1)
|
||||||
|
self.conn._create_connection = self._create_connection(response_text)
|
||||||
|
self.conn.set_tunnel('destination.com')
|
||||||
|
|
||||||
|
with support.captured_stdout() as output:
|
||||||
|
self.conn.request('PUT', '/', '')
|
||||||
|
lines = output.getvalue().splitlines()
|
||||||
|
self.assertIn('header: {}'.format(expected_header), lines)
|
||||||
|
|
||||||
|
|
||||||
@support.reap_threads
|
@support.reap_threads
|
||||||
|
|
|
@ -232,6 +232,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #13128: Print response headers for CONNECT requests when debuglevel
|
||||||
|
> 0. Patch by Demian Brecht.
|
||||||
|
|
||||||
- Issue #15381: Optimized io.BytesIO to make less allocations and copyings.
|
- Issue #15381: Optimized io.BytesIO to make less allocations and copyings.
|
||||||
|
|
||||||
- Issue #22818: Splitting on a pattern that could match an empty string now
|
- Issue #22818: Splitting on a pattern that could match an empty string now
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue