mirror of
https://github.com/frappe/gunicorn.git
synced 2026-01-14 11:09:11 +08:00
patch from Djoume Salvetti . address the following issues in gunicorn: * Gunicorn does not limit the size of a request header (the * limit_request_field_size configuration parameter is not used) * When the configured request limit is lower than its maximum value, the * maximum value is used instead. For instance if limit_request_line is * set to 1024, gunicorn will only limit the request line to 4096 chars * (this issue also affects limit_request_fields) * Request limits are not limited to their maximum authorized values. For * instance it is possible to set limit_request_line to 64K (this issue * also affects limit_request_fields) * Setting limit_request_fields and limit_request_field_size to 0 does * not make them unlimited. The following patch allows limit_request_line * and limit_request_field_size to be unlimited. limit_request_fields can * no longer be unlimited (I can't imagine 32K fields to not be enough * but I have a use case where 8K for the request line is not enough). * Parsing errors (premature client disconnection) are not reported * When request line limit is exceeded the configured value is reported * instead of the effective value.
33 lines
910 B
Python
33 lines
910 B
Python
# -*- coding: utf-8 -
|
|
#
|
|
# This file is part of gunicorn released under the MIT license.
|
|
# See the NOTICE for more information.
|
|
|
|
import t
|
|
import treq
|
|
|
|
import glob
|
|
import os
|
|
dirname = os.path.dirname(__file__)
|
|
reqdir = os.path.join(dirname, "requests", "valid")
|
|
|
|
def a_case(fname):
|
|
env = treq.load_py(os.path.splitext(fname)[0] + ".py")
|
|
expect = env['request']
|
|
cfg = env['cfg']
|
|
req = treq.request(fname, expect)
|
|
for case in req.gen_cases(cfg):
|
|
case[0](*case[1:])
|
|
|
|
def test_http_parser():
|
|
for fname in glob.glob(os.path.join(reqdir, "*.http")):
|
|
if os.getenv("GUNS_BLAZING"):
|
|
env = treq.load_py(os.path.splitext(fname)[0] + ".py")
|
|
expect = env['request']
|
|
cfg = env['cfg']
|
|
req = treq.request(fname, expect)
|
|
for case in req.gen_cases(cfg):
|
|
yield case
|
|
else:
|
|
yield (a_case, fname)
|