more fixes

This commit is contained in:
Benoit Chesneau 2010-01-15 23:19:16 +01:00
parent fe5f44d0b7
commit 5324d3cb60
2 changed files with 11 additions and 24 deletions

View File

@ -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()
self.start_response_called = True

View File

@ -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()