[Python-checkins] r70633 - in python/branches/py3k/Lib/http: client.py server.py

jeremy.hylton python-checkins at python.org
Fri Mar 27 18:14:19 CET 2009


Author: jeremy.hylton
Date: Fri Mar 27 18:14:18 2009
New Revision: 70633
Log:
Replace duplicate code in http.server with call to http.client.parse_headers().
Modified:
 python/branches/py3k/Lib/http/client.py
 python/branches/py3k/Lib/http/server.py
Modified: python/branches/py3k/Lib/http/client.py
==============================================================================
--- python/branches/py3k/Lib/http/client.py	(original)
+++ python/branches/py3k/Lib/http/client.py	Fri Mar 27 18:14:18 2009
@@ -237,8 +237,6 @@
 to parse.
 
 """
- # XXX: Copied from http.server.BaseHTTPRequestHandler.parse_request,
- # maybe we can just call this function from there.
 headers = []
 while True:
 line = fp.readline()
Modified: python/branches/py3k/Lib/http/server.py
==============================================================================
--- python/branches/py3k/Lib/http/server.py	(original)
+++ python/branches/py3k/Lib/http/server.py	Fri Mar 27 18:14:18 2009
@@ -88,6 +88,7 @@
 import os
 import sys
 import cgi
+import http.client
 import time
 import socket # For gethostbyaddr()
 import shutil
@@ -312,20 +313,7 @@
 self.command, self.path, self.request_version = command, path, version
 
 # Examine the headers and look for a Connection directive.
-
- # MessageClass wants to see strings rather than bytes.
- # But a TextIOWrapper around self.rfile would buffer too many bytes
- # from the stream, bytes which we later need to read as bytes.
- # So we read the correct bytes here, as bytes, then use StringIO
- # to make them look like strings for MessageClass to parse.
- headers = []
- while True:
- line = self.rfile.readline()
- headers.append(line)
- if line in (b'\r\n', b'\n', b''):
- break
- hfile = io.StringIO(b''.join(headers).decode('iso-8859-1'))
- self.headers = email.parser.Parser(_class=self.MessageClass).parse(hfile)
+ self.headers = http.client.parse_headers(self.rfile)
 
 conntype = self.headers.get('Connection', "")
 if conntype.lower() == 'close':
@@ -524,7 +512,6 @@
 protocol_version = "HTTP/1.0"
 
 # MessageClass used to parse headers
- import http.client
 MessageClass = http.client.HTTPMessage
 
 # Table mapping response codes to messages; entries have the


More information about the Python-checkins mailing list

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