mirror of
https://github.com/python/cpython.git
synced 2025-09-18 14:40:43 +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''):
|
||||
break
|
||||
|
||||
if self.debuglevel > 0:
|
||||
print('header:', line.decode())
|
||||
|
||||
def connect(self):
|
||||
"""Connect to the host and port specified in __init__."""
|
||||
self.sock = self._create_connection(
|
||||
|
|
|
@ -1269,17 +1269,18 @@ class TunnelTests(TestCase):
|
|||
'HTTP/1.1 200 OK\r\n' # Reply to HEAD
|
||||
'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.conn = client.HTTPConnection(self.host)
|
||||
self.conn._create_connection = create_connection
|
||||
self.conn._create_connection = self._create_connection(response_text)
|
||||
|
||||
def tearDown(self):
|
||||
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):
|
||||
tunnel_host = 'destination.com'
|
||||
tunnel_port = 8888
|
||||
|
@ -1320,6 +1321,18 @@ class TunnelTests(TestCase):
|
|||
self.assertIn(b'CONNECT 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
|
||||
|
|
|
@ -232,6 +232,9 @@ Core and Builtins
|
|||
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 #22818: Splitting on a pattern that could match an empty string now
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue