pass config to the http parser.

This commit is contained in:
benoitc 2012-02-20 07:02:55 +01:00
parent 613378529b
commit 6766c14793
4 changed files with 9 additions and 8 deletions

View File

@ -16,7 +16,8 @@ from gunicorn.http.errors import InvalidHeader, InvalidHeaderName, NoMoreData, \
InvalidRequestLine, InvalidRequestMethod, InvalidHTTPVersion
class Message(object):
def __init__(self, unreader):
def __init__(self, cfg, unreader):
self.cfg = cfg
self.unreader = unreader
self.version = None
self.headers = []
@ -96,7 +97,7 @@ class Message(object):
class Request(Message):
def __init__(self, unreader):
def __init__(self, cfg, unreader):
self.methre = re.compile("[A-Z0-9$-_.]{3,20}")
self.versre = re.compile("HTTP/(\d+).(\d+)")
@ -106,7 +107,7 @@ class Request(Message):
self.query = None
self.fragment = None
super(Request, self).__init__(unreader)
super(Request, self).__init__(cfg, unreader)
def get_data(self, unreader, buf, stop=False):
@ -119,7 +120,6 @@ class Request(Message):
def parse(self, unreader):
buf = StringIO()
self.get_data(unreader, buf, stop=True)
# Request line

View File

@ -7,8 +7,9 @@ from gunicorn.http.message import Request
from gunicorn.http.unreader import SocketUnreader, IterUnreader
class Parser(object):
def __init__(self, mesg_class, source):
def __init__(self, mesg_class, cfg, source):
self.mesg_class = mesg_class
self.cfg = cfg
if hasattr(source, "recv"):
self.unreader = SocketUnreader(source)
else:
@ -30,7 +31,7 @@ class Parser(object):
data = self.mesg.body.read(8192)
# Parse the next request
self.mesg = self.mesg_class(self.unreader)
self.mesg = self.mesg_class(self.cfg, self.unreader)
if not self.mesg:
raise StopIteration()
return self.mesg

View File

@ -27,7 +27,7 @@ class AsyncWorker(base.Worker):
def handle(self, client, addr):
try:
parser = http.RequestParser(client)
parser = http.RequestParser(self.cfg, client)
try:
while True:
req = None

View File

@ -66,7 +66,7 @@ class SyncWorker(base.Worker):
def handle(self, client, addr):
try:
parser = http.RequestParser(client)
parser = http.RequestParser(self.cfg, client)
req = parser.next()
self.handle_request(req, client, addr)
except StopIteration, e: