[Python-checkins] r88143 - in python/branches/py3k: Lib/http/client.py Lib/test/test_httpservers.py Misc/NEWS

armin.ronacher python-checkins at python.org
Sat Jan 22 14:44:22 CET 2011


Author: armin.ronacher
Date: Sat Jan 22 14:44:22 2011
New Revision: 88143
Log:
To match the behaviour of HTTP server, the HTTP client library now also encodes
headers with iso-8859-1 (latin1) encoding. It was already doing that for
incoming headers which makes this behaviour now consistent in both incoming and
outgoing direction.
Modified:
 python/branches/py3k/Lib/http/client.py
 python/branches/py3k/Lib/test/test_httpservers.py
 python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/http/client.py
==============================================================================
--- python/branches/py3k/Lib/http/client.py	(original)
+++ python/branches/py3k/Lib/http/client.py	Sat Jan 22 14:44:22 2011
@@ -696,7 +696,7 @@
 self.send(connect_bytes)
 for header, value in self._tunnel_headers.iteritems():
 header_str = "%s: %s\r\n" % (header, value)
- header_bytes = header_str.encode("ascii")
+ header_bytes = header_str.encode("latin1")
 self.send(header_bytes)
 
 response = self.response_class(self.sock, method = self._method)
@@ -935,7 +935,7 @@
 values = list(values)
 for i, one_value in enumerate(values):
 if hasattr(one_value, 'encode'):
- values[i] = one_value.encode('ascii')
+ values[i] = one_value.encode('latin1')
 elif isinstance(one_value, int):
 values[i] = str(one_value).encode('ascii')
 value = b'\r\n\t'.join(values)
Modified: python/branches/py3k/Lib/test/test_httpservers.py
==============================================================================
--- python/branches/py3k/Lib/test/test_httpservers.py	(original)
+++ python/branches/py3k/Lib/test/test_httpservers.py	Sat Jan 22 14:44:22 2011
@@ -100,7 +100,10 @@
 def do_LATINONEHEADER(self):
 self.send_response(999)
 self.send_header('X-Special', 'Dängerous Mind')
+ self.send_header('Connection', 'close')
 self.end_headers()
+ body = self.headers['x-special-incoming'].encode('utf-8')
+ self.wfile.write(body)
 
 def setUp(self):
 BaseTestCase.setUp(self)
@@ -200,9 +203,12 @@
 self.assertEqual(res.status, 999)
 
 def test_latin1_header(self):
- self.con.request('LATINONEHEADER', '/')
+ self.con.request('LATINONEHEADER', '/', headers={
+ 'X-Special-Incoming': 'Ärger mit Unicode'
+ })
 res = self.con.getresponse()
 self.assertEqual(res.getheader('X-Special'), 'Dängerous Mind')
+ self.assertEqual(res.read(), 'Ärger mit Unicode'.encode('utf-8'))
 
 
 class SimpleHTTPServerTestCase(BaseTestCase):
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Sat Jan 22 14:44:22 2011
@@ -33,6 +33,11 @@
 encoding. This is the preferred encoding of PEP 3333 and the base encoding
 of HTTP 1.1.
 
+- To match the behaviour of HTTP server, the HTTP client library now also
+ encodes headers with iso-8859-1 (latin1) encoding. It was already doing
+ that for incoming headers which makes this behaviour now consistent in
+ both incoming and outgoing direction.
+
 
 What's New in Python 3.2 Release Candidate 1
 ============================================


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /