mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
more optimisations. no need to uppercase or lowercase each time we want
to test an header since the parser already send the headers in uppercase
This commit is contained in:
parent
e8bc2cdae8
commit
42d97c3815
@ -62,18 +62,20 @@ class Message(object):
|
||||
def set_body_reader(self):
|
||||
chunked = False
|
||||
clength = None
|
||||
|
||||
for (name, value) in self.headers:
|
||||
if name.upper() == "CONTENT-LENGTH":
|
||||
if name == "CONTENT-LENGTH":
|
||||
try:
|
||||
clength = int(value)
|
||||
except ValueError:
|
||||
clength = None
|
||||
elif name.upper() == "TRANSFER-ENCODING":
|
||||
elif name == "TRANSFER-ENCODING":
|
||||
chunked = value.lower() == "chunked"
|
||||
elif name.upper() == "SEC-WEBSOCKET-KEY1":
|
||||
elif name == "SEC-WEBSOCKET-KEY1":
|
||||
clength = 8
|
||||
|
||||
|
||||
if clength is not None or chunked:
|
||||
break
|
||||
|
||||
if chunked:
|
||||
self.body = Body(ChunkedReader(self, self.unreader))
|
||||
elif clength is not None:
|
||||
@ -83,11 +85,13 @@ class Message(object):
|
||||
|
||||
def should_close(self):
|
||||
for (h, v) in self.headers:
|
||||
if h.lower() == "connection":
|
||||
if v.lower().strip() == "close":
|
||||
if h == "CONNECTION":
|
||||
v = v.lower().strip()
|
||||
if v == "close":
|
||||
return True
|
||||
elif v.lower().strip() == "keep-alive":
|
||||
elif v == "keep-alive":
|
||||
return False
|
||||
break
|
||||
return self.version <= (1, 0)
|
||||
|
||||
|
||||
|
||||
@ -32,24 +32,23 @@ def create(req, sock, client, server, cfg):
|
||||
content_type = ""
|
||||
content_length = ""
|
||||
for hdr_name, hdr_value in req.headers:
|
||||
name = hdr_name.lower()
|
||||
if name == "expect":
|
||||
if hdr_name == "EXPECT":
|
||||
# handle expect
|
||||
if hdr_value.lower() == "100-continue":
|
||||
sock.send("HTTP/1.1 100 Continue\r\n\r\n")
|
||||
elif name == "x-forwarded-for":
|
||||
elif hdr_name == "X-FORWARDED-FOR":
|
||||
forward = hdr_value
|
||||
elif name == "x-forwarded-protocol" and hdr_value.lower() == "ssl":
|
||||
elif hdr_name == "X-FORWARDED-PROTOCOL" and hdr_value.lower() == "ssl":
|
||||
url_scheme = "https"
|
||||
elif name == "x-forwarded-ssl" and hdr_value.lower() == "on":
|
||||
elif hdr_name == "X-FORWARDED-SSL" and hdr_value.lower() == "on":
|
||||
url_scheme = "https"
|
||||
elif name == "host":
|
||||
elif hdr_name == "HOST":
|
||||
server = hdr_value
|
||||
elif name == "script_name":
|
||||
elif hdr_name == "SCRIPT_NAME":
|
||||
script_name = hdr_value
|
||||
elif name == "content-type":
|
||||
elif hdr_name == "CONTENT-TYPE":
|
||||
content_type = hdr_value
|
||||
elif name == "content-length":
|
||||
elif hdr_name == "CONTENT-LENGTH":
|
||||
content_length = hdr_value
|
||||
else:
|
||||
continue
|
||||
@ -107,7 +106,7 @@ def create(req, sock, client, server, cfg):
|
||||
}
|
||||
|
||||
for key, value in req.headers:
|
||||
key = 'HTTP_' + key.upper().replace('-', '_')
|
||||
key = 'HTTP_' + key.replace('-', '_')
|
||||
if key not in ('HTTP_CONTENT_TYPE', 'HTTP_CONTENT_LENGTH'):
|
||||
environ[key] = value
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user