summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorBerker Peksag <berker.peksag@gmail.com>2015-02-03 12:22:11 +0200
committerBerker Peksag <berker.peksag@gmail.com>2015-02-03 12:22:11 +0200
commitfa77458c710e45cd6977814f979612acc5e1457d (patch)
treef82f2949bc0e169848f5625f3dfd28443297ee61 /Lib
parentf7da0e800594b865458252991a2d1139785398c0 (diff)
downloadcpython-fa77458c710e45cd6977814f979612acc5e1457d.tar.gz
Issue #13128: Print response headers for CONNECT requests when debuglevel > 0.
Patch by Demian Brecht.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/http/client.py3
-rw-r--r--Lib/test/test_httplib.py23
2 files changed, 21 insertions, 5 deletions
diff --git a/Lib/http/client.py b/Lib/http/client.py
index 392715b24d..a77e501296 100644
--- a/Lib/http/client.py
+++ b/Lib/http/client.py
@@ -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(
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 31d3184b2a..40ef250e9f 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -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