From 5324d3cb60b6fb8ab5b3997b2050fe2734c8a5df Mon Sep 17 00:00:00 2001 From: Benoit Chesneau Date: Fri, 15 Jan 2010 23:19:16 +0100 Subject: [PATCH] more fixes --- gunicorn/http/request.py | 22 ++++++---------------- gunicorn/http/response.py | 13 +++++-------- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/gunicorn/http/request.py b/gunicorn/http/request.py index 1e9b7958..3d7e7ea9 100644 --- a/gunicorn/http/request.py +++ b/gunicorn/http/request.py @@ -58,10 +58,6 @@ class HTTPRequest(object): self.socket = socket self.client_address = client_address self.server_address = server_address - self.version = None - self.method = None - self.path = None - self.headers = {} self.response_status = None self.response_headers = {} self._version = 11 @@ -91,7 +87,7 @@ class HTTPRequest(object): wsgi_input = StringIO.StringIO() else: wsgi_input = TeeInput(self.socket, parser, buf, remain) - + environ = { "wsgi.url_scheme": 'http', "wsgi.input": wsgi_input, @@ -105,9 +101,9 @@ class HTTPRequest(object): "REQUEST_METHOD": self.parser.method, "PATH_INFO": unquote(path_info), "QUERY_STRING": query, - "RAW_URI": self.path, - "CONTENT_TYPE": self.headers.get('CONTENT-TYPE', ''), - "CONTENT_LENGTH": wsgi_input.len, + "RAW_URI": self.parser.path, + "CONTENT_TYPE": headers.get('Content-Type', ''), + "CONTENT_LENGTH": str(wsgi_input.len), "REMOTE_ADDR": self.client_address[0], "REMOTE_PORT": self.client_address[1], "SERVER_NAME": self.server_address[0], @@ -115,7 +111,7 @@ class HTTPRequest(object): "SERVER_PROTOCOL": self.parser.version } - for key, value in self.headers.items(): + for key, value in headers.items(): key = 'HTTP_' + key.upper().replace('-', '_') if key not in ('HTTP_CONTENT_TYPE', 'HTTP_CONTENT_LENGTH'): environ[key] = value @@ -151,10 +147,4 @@ class HTTPRequest(object): if not isinstance(value, basestring): value = str(value) self.response_headers[name] = value.strip() - self.start_response_called = True - - def write(self, data): - self.io.write(send) - - def close(self): - self.socket.close() \ No newline at end of file + self.start_response_called = True \ No newline at end of file diff --git a/gunicorn/http/response.py b/gunicorn/http/response.py index 81255308..1b2b120f 100644 --- a/gunicorn/http/response.py +++ b/gunicorn/http/response.py @@ -33,13 +33,10 @@ class HTTPResponse(object): self.data = data self.headers = self.req.response_headers or {} - def write(self, data): - self.req.socket.send(data) - def send(self): # send headers resp_head = [] - resp_head.append("%s %ss\r\n" % (self.req.version, self.req.response_status)) + resp_head.append("%s %ss\r\n" % (self.req.parser.version, self.req.response_status)) resp_head.append("Server: %s\r\n" % self.req.SERVER_VERSION) resp_head.append("Date: %s\r\n" % http_date()) @@ -49,13 +46,13 @@ class HTTPResponse(object): resp_head.append("Connection: close\r\n") for name, value in self.req.response_headers.items(): resp_head.append("%s: %s\r\n" % (name, value)) - self.write("%s\r\n" % "".join(resp_head)) + self.req.socket.send("%s\r\n" % "".join(resp_head)) for chunk in self.data: - self.write(chunk) - - self.req.close() + self.req.socket.send(chunk) + self.req.socket.close() + if hasattr(self.data, "close"): self.data.close() \ No newline at end of file