aboutsummaryrefslogtreecommitdiffstats
path: root/deckit/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'deckit/server.py')
-rw-r--r--deckit/server.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/deckit/server.py b/deckit/server.py
index bbd92cf..bddbb00 100644
--- a/deckit/server.py
+++ b/deckit/server.py
@@ -129,14 +129,17 @@ class Handler(BaseHTTPRequestHandler):
return self._send(404, str(e).encode())
if fn is None:
return self._send(404, b"unknown action")
- length = int(self.headers.get("Content-Length", 0) or 0)
+ try:
+ length = int(self.headers.get("Content-Length", 0) or 0)
+ except ValueError:
+ return self._send(400, b"Invalid Content-Length")
if self.headers.get("Content-Type") != "application/json" or not 0 < length <= 4096:
return self._send(400, b"Expected a small JSON body")
try:
result = fn(json.loads(self.rfile.read(length)))
except module.ModuleError as e:
return self._send(400, str(e).encode())
- except (ValueError, AttributeError):
+ except (ValueError, AttributeError, TypeError, KeyError):
return self._send(400, b"Invalid request")
if result is None:
return self._send(204)