]> granicus.if.org Git - python/commitdiff
Replace duplicate code in http.server with call to http.client.parse_headers().
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Mar 2009 17:14:18 +0000 (17:14 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Mar 2009 17:14:18 +0000 (17:14 +0000)
Lib/http/client.py
Lib/http/server.py

index 0477ddd2d1b13dfcc082ccb7abb5a0f5265124e0..1fe010cc842576ff358d2fa5b110757c3597d5bc 100644 (file)
@@ -237,8 +237,6 @@ def parse_headers(fp):
     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()
index 5726017b38c93a858679a62dbc00e87c1d037daa..59d92dbf7f9f260e99475070499e467402e1f028 100644 (file)
@@ -88,6 +88,7 @@ import io
 import os
 import sys
 import cgi
+import http.client
 import time
 import socket # For gethostbyaddr()
 import shutil
@@ -312,20 +313,7 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
         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 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
     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