diff --git a/r2/r2/config/middleware.py b/r2/r2/config/middleware.py index f0c0d8d11..34270d1a0 100644 --- a/r2/r2/config/middleware.py +++ b/r2/r2/config/middleware.py @@ -447,11 +447,24 @@ class LimitUploadSize(object): def __call__(self, environ, start_response): cl_key = 'CONTENT_LENGTH' if environ['REQUEST_METHOD'] == 'POST': - if ((cl_key not in environ) - or int(environ[cl_key]) > self.max_size): + if cl_key not in environ: r = Response() - r.status_code = 500 - r.content = 'request too big' + r.status_code = 411 + r.content = 'length required' + return r(environ, start_response) + + try: + cl_int = int(environ[cl_key]) + except ValueError: + r = Response() + r.status_code = 400 + r.content = 'bad request' + return r(environ, start_response) + + if cl_int > self.max_size: + r = Response() + r.status_code = 413 + r.content = 'request entity too large' return r(environ, start_response) return self.app(environ, start_response)