[Python-checkins] r87818 - peps/trunk/pep-3333.txt

phillip.eby python-checkins at python.org
Fri Jan 7 16:53:02 CET 2011


Author: phillip.eby
Date: Fri Jan 7 16:53:02 2011
New Revision: 87818
Log:
Need to actually encode headers being sent...
Modified:
 peps/trunk/pep-3333.txt
Modified: peps/trunk/pep-3333.txt
==============================================================================
--- peps/trunk/pep-3333.txt	(original)
+++ peps/trunk/pep-3333.txt	Fri Jan 7 16:53:02 2011
@@ -283,12 +283,15 @@
 
 enc, esc = sys.getfilesystemencoding(), 'surrogateescape'
 
- def wsgi_string(u):
+ def unicode_to_wsgi(u):
 # Convert an environment variable to a WSGI "bytes-as-unicode" string
 return u.encode(enc, esc).decode('iso-8859-1')
 
+ def wsgi_to_bytes(s):
+ return s.encode('iso-8859-1')
+
 def run_with_cgi(application):
- environ = {k: wsgi_string(v) for k,v in os.environ.items()}
+ environ = {k: unicode_to_wsgi(v) for k,v in os.environ.items()}
 environ['wsgi.input'] = sys.stdin
 environ['wsgi.errors'] = sys.stderr
 environ['wsgi.version'] = (1, 0)
@@ -305,19 +308,21 @@
 headers_sent = []
 
 def write(data):
+ out = sys.stdout.buffer
+
 if not headers_set:
 raise AssertionError("write() before start_response()")
 
 elif not headers_sent:
 # Before the first output, send the stored headers
 status, response_headers = headers_sent[:] = headers_set
- sys.stdout.buffer.write('Status: %s\r\n' % status)
+ out.write(wsgi_to_bytes('Status: %s\r\n' % status))
 for header in response_headers:
- sys.stdout.buffer.write('%s: %s\r\n' % header)
- sys.stdout.write('\r\n')
+ out.write(wsgi_to_bytes('%s: %s\r\n' % header))
+ out.write(wsgi_to_bytes('\r\n'))
 
- sys.stdout.buffer.write(data)
- sys.stdout.buffer.flush()
+ out.write(data)
+ out.flush()
 
 def start_response(status, response_headers, exc_info=None):
 if exc_info:


More information about the Python-checkins mailing list

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