fix lot of typos/bug

This commit is contained in:
Benoit Chesneau 2010-01-15 22:51:23 +01:00
parent 73763d66bf
commit fe5f44d0b7
4 changed files with 26 additions and 25 deletions

View File

@ -27,13 +27,13 @@ from ctypes import *
class HttpParser(object): class HttpParser(object):
def __init__(self): def __init__(self):
self.headers = {} self._headers = {}
self.version = None self.version = None
self.method None self.method = None
self.path = None self.path = None
self._content_len = None self._content_len = None
def header(self, headers, buf): def headers(self, headers, buf):
""" take a string buff. It return """ take a string buff. It return
environ or None if parsing isn't done. environ or None if parsing isn't done.
""" """
@ -62,15 +62,15 @@ class HttpParser(object):
hname = "" hname = ""
for line in lines: for line in lines:
if line == "\t": if line == "\t":
self.headers[hname] += line.strip() self._headers[hname] += line.strip()
else: else:
try: try:
hname =self._parse_headerl(line) hname =self._parse_headerl(line)
except ValueError: except ValueError:
# bad headers # bad headers
pass pass
headers = self.headers headers = self._headers
self._content_len = int(self._headers.get('Content-Length')) self._content_len = int(self._headers.get('Content-Length') or 0)
return headers return headers
def _first_line(self, line): def _first_line(self, line):
@ -82,16 +82,16 @@ class HttpParser(object):
def _parse_headerl(self, line): def _parse_headerl(self, line):
name, value = line.split(": ", 1) name, value = line.split(": ", 1)
name = name.strip() name = name.strip()
self.headers[name] = value.strip() self._headers[name] = value.strip()
return name return name
@property @property
def should_close(self): def should_close(self):
if self._should_close: if self._should_close:
return True return True
if self.headers.get("Connection") == "close": if self._headers.get("Connection") == "close":
return True return True
if self.headers.get("Connection") == "Keep-Alive": if self._headers.get("Connection") == "Keep-Alive":
return False return False
if self.version < "HTTP/1.1": if self.version < "HTTP/1.1":
return True return True
@ -117,12 +117,14 @@ class HttpParser(object):
if self._len_content == 0: if self._len_content == 0:
return True return True
return False return False
def fetch_body(self, buf, data): def fetch_body(self, buf, data):
dlen = len(data) dlen = len(data)
resize(buf, sizeof(data)) resize(buf, sizeof(data))
s = data.value
if self.is_chunked: if self.is_chunked:
# do chunk # do chunk
pass
else: else:
if self.content_len > 0: if self.content_len > 0:
nr = min(len(data), self._content_len) nr = min(len(data), self._content_len)

View File

@ -81,17 +81,16 @@ class HTTPRequest(object):
if headers.get('Accept', '').lower() == "100-continue": if headers.get('Accept', '').lower() == "100-continue":
self.socket.send("100 Continue\n") self.socket.send("100 Continue\n")
if "?" in parser.path: if "?" in self.parser.path:
path_info, query = parser.path.split('?', 1) path_info, query = self.parser.path.split('?', 1)
else: else:
path_info = self.parser.path path_info = self.parser.path
query = "" query = ""
if not length: if not self.parser.content_length and not self.parser.is_chunked:
if not self.parser.content_length and not self.parser.is_chunked: wsgi_input = StringIO.StringIO()
wsgi_input = StringIO.StringIO() else:
else: wsgi_input = TeeInput(self.socket, parser, buf, remain)
wsgi_input = TeeInput(self.socket, parser, buf, remain)
environ = { environ = {
"wsgi.url_scheme": 'http', "wsgi.url_scheme": 'http',
@ -103,7 +102,7 @@ class HTTPRequest(object):
"wsgi.run_once": False, "wsgi.run_once": False,
"SCRIPT_NAME": "", "SCRIPT_NAME": "",
"SERVER_SOFTWARE": self.SERVER_VERSION, "SERVER_SOFTWARE": self.SERVER_VERSION,
"REQUEST_METHOD": self.method, "REQUEST_METHOD": self.parser.method,
"PATH_INFO": unquote(path_info), "PATH_INFO": unquote(path_info),
"QUERY_STRING": query, "QUERY_STRING": query,
"RAW_URI": self.path, "RAW_URI": self.path,
@ -113,7 +112,7 @@ class HTTPRequest(object):
"REMOTE_PORT": self.client_address[1], "REMOTE_PORT": self.client_address[1],
"SERVER_NAME": self.server_address[0], "SERVER_NAME": self.server_address[0],
"SERVER_PORT": self.server_address[1], "SERVER_PORT": self.server_address[1],
"SERVER_PROTOCOL": self.version "SERVER_PROTOCOL": self.parser.version
} }
for key, value in self.headers.items(): for key, value in self.headers.items():

View File

@ -49,7 +49,7 @@ class TeeInput(object):
if self._len and self._len < MAX_BODY: if self._len and self._len < MAX_BODY:
self.tmp = StringIO.StringIO() self.tmp = StringIO.StringIO()
else: else:
self.tmp = new tempfile.TemporaryFile() self.tmp = tempfile.TemporaryFile()
self.buf2 = create_string_buffer(tmp) self.buf2 = create_string_buffer(tmp)
if len(buf) > 0: if len(buf) > 0:
parser.filter_body(self.buf2, buf) parser.filter_body(self.buf2, buf)
@ -59,7 +59,7 @@ class TeeInput(object):
@property @property
def len(self): def len(self):
if self._len return self._len if self._len: return self._len
if self.remain: if self.remain:
pos = self.tmp.tell() pos = self.tmp.tell()
while True: while True:
@ -76,7 +76,7 @@ class TeeInput(object):
return self.tmp.read(length) return self.tmp.read(length)
if not length: if not length:
r = self.tmp.read() or || r = self.tmp.read() or ""
while self._tee(self.remain, self.buf2): while self._tee(self.remain, self.buf2):
r += self.buf2.value r += self.buf2.value
return r return r
@ -84,7 +84,7 @@ class TeeInput(object):
r = self.buf2 r = self.buf2
diff = self._tmp_size() - self.tmp.tell() diff = self._tmp_size() - self.tmp.tell()
if not diff: if not diff:
return self._ensure_length((self._tee(self.remain, r), self.remain) return self._ensure_length(self._tee(self.remain, r), self.remain)
else: else:
length = min(diff, self.remain) length = min(diff, self.remain)
return self._ensure_length(self._tee(length, r), length) return self._ensure_length(self._tee(length, r), length)
@ -132,7 +132,7 @@ class TeeInput(object):
def _ensure_length(buf, length): def _ensure_length(buf, length):
if not buf or not self._len: if not buf or not self._len:
return buf return buf
while len(buf) < length && self.len != self.tmp.pos(): while len(buf) < length and self.len != self.tmp.pos():
buf += self._tee(length - len(buf), self.buf2) buf += self._tee(length - len(buf), self.buf2)
return buf return buf

View File

@ -31,7 +31,7 @@ from setuptools import setup, find_packages
setup( setup(
name = 'gunicorn', name = 'gunicorn',
version = '0.1', version = '0.2',
description = 'WSGI HTTP Server for UNIX', description = 'WSGI HTTP Server for UNIX',
long_description = file( long_description = file(