]> granicus.if.org Git - python/commitdiff
Fix compatibility issue with HTTPMessage class.
authorJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Mar 2009 18:31:36 +0000 (18:31 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Fri, 27 Mar 2009 18:31:36 +0000 (18:31 +0000)
The server needs to use MessageClass to parse.

Lib/http/client.py
Lib/http/server.py

index 1fe010cc842576ff358d2fa5b110757c3597d5bc..5e091b89dca91e7574a7166ad4ded989aaee4208 100644 (file)
@@ -213,7 +213,6 @@ class HTTPMessage(email.message.Message):
         occurrences are returned.  Case is not important in the header name.
 
         """
-        # XXX: copied from rfc822.Message for compatibility
         name = name.lower() + ':'
         n = len(name)
         lst = []
@@ -227,7 +226,7 @@ class HTTPMessage(email.message.Message):
                 lst.append(line)
         return lst
 
-def parse_headers(fp):
+def parse_headers(fp, _class=HTTPMessage):
     """Parses only RFC2822 headers from a file pointer.
 
     email Parser wants to see strings rather than bytes.
@@ -245,7 +244,7 @@ def parse_headers(fp):
             break
     hstring = b''.join(headers).decode('iso-8859-1')
 
-    return email.parser.Parser(_class=HTTPMessage).parsestr(hstring)
+    return email.parser.Parser(_class=_class).parsestr(hstring)
 
 class HTTPResponse(io.RawIOBase):
 
index 897908ec30318a36a1015fb90f2d0703893f2572..31153f4a3995922397ec6d605a06e058ee379b62 100644 (file)
@@ -313,7 +313,8 @@ class BaseHTTPRequestHandler(socketserver.StreamRequestHandler):
         self.command, self.path, self.request_version = command, path, version
 
         # Examine the headers and look for a Connection directive.
-        self.headers = http.client.parse_headers(self.rfile)
+        self.headers = http.client.parse_headers(self.rfile,
+                                                 _class=self.MessageClass)
 
         conntype = self.headers.get('Connection', "")
         if conntype.lower() == 'close':