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

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


Author: armin.ronacher
Date: Sat Jan 22 14:13:05 2011
New Revision: 88142
Log:
Issue #10980: encode headers with latin1 instead of ASCII in the HTTP server.
This makes the implementation of PEP 3333 compliant servers on top of
BaseHTTPServer possible.
Modified:
 python/branches/py3k/Lib/http/server.py
 python/branches/py3k/Lib/test/test_httpservers.py
 python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/http/server.py
==============================================================================
--- python/branches/py3k/Lib/http/server.py	(original)
+++ python/branches/py3k/Lib/http/server.py	Sat Jan 22 14:13:05 2011
@@ -448,7 +448,7 @@
 message = ''
 if self.request_version != 'HTTP/0.9':
 self.wfile.write(("%s %d %s\r\n" %
- (self.protocol_version, code, message)).encode('ASCII', 'strict'))
+ (self.protocol_version, code, message)).encode('latin1', 'strict'))
 
 def send_header(self, keyword, value):
 """Send a MIME header."""
@@ -456,7 +456,7 @@
 if not hasattr(self, '_headers_buffer'):
 self._headers_buffer = []
 self._headers_buffer.append(
- ("%s: %s\r\n" % (keyword, value)).encode('ASCII', 'strict'))
+ ("%s: %s\r\n" % (keyword, value)).encode('latin1', 'strict'))
 
 if keyword.lower() == 'connection':
 if value.lower() == 'close':
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:13:05 2011
@@ -97,6 +97,11 @@
 self.send_header('Connection', 'close')
 self.end_headers()
 
+ def do_LATINONEHEADER(self):
+ self.send_response(999)
+ self.send_header('X-Special', 'Dängerous Mind')
+ self.end_headers()
+
 def setUp(self):
 BaseTestCase.setUp(self)
 self.con = http.client.HTTPConnection('localhost', self.PORT)
@@ -194,6 +199,11 @@
 res = self.con.getresponse()
 self.assertEqual(res.status, 999)
 
+ def test_latin1_header(self):
+ self.con.request('LATINONEHEADER', '/')
+ res = self.con.getresponse()
+ self.assertEqual(res.getheader('X-Special'), 'Dängerous Mind')
+
 
 class SimpleHTTPServerTestCase(BaseTestCase):
 class request_handler(NoLogRequestHandler, SimpleHTTPRequestHandler):
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Sat Jan 22 14:13:05 2011
@@ -29,6 +29,10 @@
 - Issue #10898: Allow compiling the posix module when the C library defines
 a symbol named FSTAT.
 
+- Issue #10980: the HTTP server now encodes headers with iso-8859-1 (latin1)
+ encoding. This is the preferred encoding of PEP 3333 and the base encoding
+ of HTTP 1.1.
+
 
 What's New in Python 3.2 Release Candidate 1
 ============================================


More information about the Python-checkins mailing list

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