nmhive.py: Return 400 errors for data-less POSTs
authorW. Trevor King <wking@tremily.us>
Mon, 22 Sep 2014 13:53:48 +0000 (06:53 -0700)
committerW. Trevor King <wking@tremily.us>
Mon, 22 Sep 2014 14:08:51 +0000 (07:08 -0700)
Avoid:

  Traceback (most recent call last):
    File "/.../flask/app.py", line 1836, in __call__
      return self.wsgi_app(environ, start_response)
    File "/.../flask/app.py", line 1820, in wsgi_app
      response = self.make_response(self.handle_exception(e))
    File "/.../flask/app.py", line 1403, in handle_exception
      reraise(exc_type, exc_value, tb)
    File "/.../flask/_compat.py", line 33, in reraise
      raise value
    File "/.../flask/app.py", line 1817, in wsgi_app
      response = self.full_dispatch_request()
    File "/.../flask/app.py", line 1477, in full_dispatch_request
      rv = self.handle_user_exception(e)
    File "/.../flask/app.py", line 1381, in handle_user_exception
      reraise(exc_type, exc_value, tb)
    File "/.../flask/_compat.py", line 33, in reraise
      raise value
    File "/.../flask/app.py", line 1475, in full_dispatch_request
      rv = self.dispatch_request()
    File "/.../flask/app.py", line 1461, in dispatch_request
      return self.view_functions[rule.endpoint](**req.view_args)
    File "/.../nmhive.py", line 59, in message_id_tags
      for change in changes:
  TypeError: 'NoneType' object is not iterable

nmhive.py

index 4ee67470f4eb19b9b73b7c0c618a365f61b7e485..c500d9c2e551b9605c779a1bad7ae95a1721c5c5 100755 (executable)
--- a/nmhive.py
+++ b/nmhive.py
@@ -47,6 +47,8 @@ def _message_tags(message):
 def message_id_tags(message_id):
     if flask.request.method == 'POST':
         changes = flask.request.get_json()
+        if not changes:
+            return flask.Response(status=400)
         database = notmuch.Database(
             path=NOTMUCH_PATH,
             mode=notmuch.Database.MODE.READ_WRITE)