data = {}
def start_response(status, response_headers, exc_info=None):
data["status"] = status
- data["headers"] = HTTPHeaders(response_headers)
+ data["headers"] = response_headers
response = self.wsgi_application(
WSGIContainer.environ(request), start_response)
body = "".join(response)
status_code = int(data["status"].split()[0])
headers = data["headers"]
+ header_set = set(k.lower() for (k,v) in headers)
body = escape.utf8(body)
- headers["Content-Length"] = str(len(body))
- headers.setdefault("Content-Type", "text/html; charset=UTF-8")
- headers.setdefault("Server", "TornadoServer/0.1")
+ if "content-length" not in header_set:
+ headers.append(("Content-Length", str(len(body))))
+ if "content-type" not in header_set:
+ headers.append(("Content-Type", "text/html; charset=UTF-8"))
+ if "server" not in header_set:
+ headers.append(("Server", "TornadoServer/0.1"))
parts = ["HTTP/1.1 " + data["status"] + "\r\n"]
- for key, value in headers.iteritems():
+ for key, value in headers:
parts.append(escape.utf8(key) + ": " + escape.utf8(value) + "\r\n")
parts.append("\r\n")
parts.append(body)