From 3350ac8c0b5bdc6c098732931a59b7982beb760b Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Sun, 8 Nov 2015 03:52:43 +0100 Subject: [PATCH] Allow formdata to handle errors better. --- wrw/form.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/wrw/form.py b/wrw/form.py index e89901d..7905dc6 100644 --- a/wrw/form.py +++ b/wrw/form.py @@ -7,9 +7,12 @@ def formparse(req): buf = {} buf.update(urllib.parse.parse_qsl(req.query)) if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded": - rbody = req.input.read(2 ** 20) + try: + rbody = req.input.read(2 ** 20) + except IOError as exc: + return exc if len(rbody) >= 2 ** 20: - raise ValueError("x-www-form-urlencoded data is absurdly long") + return ValueError("x-www-form-urlencoded data is absurdly long") buf.update(urllib.parse.parse_qsl(rbody.decode("latin1"))) return buf @@ -161,5 +164,10 @@ class multipart(object): self.lastpart.parsehead(self.headcs) return self.lastpart -def formdata(req): - return req.item(formparse) +def formdata(req, onerror=Exception): + data = req.item(formparse) + if isinstance(data, Exception): + if onerror is Exception: + raise data + return onerror + return data -- 2.11.0