From 98eb6c283881168adbedf37bb34300c39954397a Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Fri, 27 Mar 2009 18:31:36 +0000 Subject: [PATCH] Fix compatibility issue with HTTPMessage class. The server needs to use MessageClass to parse. --- Lib/http/client.py | 5 ++--- Lib/http/server.py | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Lib/http/client.py b/Lib/http/client.py index 1fe010cc842576..5e091b89dca91e 100644 --- a/Lib/http/client.py +++ b/Lib/http/client.py @@ -213,7 +213,6 @@ def getallmatchingheaders(self, name): 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 @@ def getallmatchingheaders(self, name): 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): diff --git a/Lib/http/server.py b/Lib/http/server.py index 897908ec30318a..31153f4a399592 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -313,7 +313,8 @@ def parse_request(self): 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':