summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-04-15 18:40:15 +0100
committerErik Johnston <erik@matrix.org>2019-04-15 18:51:48 +0100
commitec638a16022d29cbab32ac8ddb4cddb7f99d6495 (patch)
tree6f36e448bba2aeb4cda46d600b079ed0bed351fb
parentNewsfile (diff)
downloadsynapse-ec638a16022d29cbab32ac8ddb4cddb7f99d6495.tar.xz
Only handle GET requests for /push_rules
-rw-r--r--docs/workers.rst3
-rw-r--r--synapse/rest/client/v1/push_rule.py7
2 files changed, 10 insertions, 0 deletions
diff --git a/docs/workers.rst b/docs/workers.rst
index d9d545610b..aa4e7a120b 100644
--- a/docs/workers.rst
+++ b/docs/workers.rst
@@ -229,6 +229,9 @@ following regular expressions::
     ^/_matrix/client/(api/v1|r0|unstable)/keys/changes$
     ^/_matrix/client/versions$
     ^/_matrix/client/(api/v1|r0|unstable)/voip/turnServer$
+
+Additionally, the following REST endpoints can be handled for GET requests::
+
     ^/_matrix/client/(api/v1|r0|unstable)/pushrules/.*$
 
 Additionally, the following REST endpoints can be handled, but all requests must
diff --git a/synapse/rest/client/v1/push_rule.py b/synapse/rest/client/v1/push_rule.py
index c654f9b5f0..7e9d95de26 100644
--- a/synapse/rest/client/v1/push_rule.py
+++ b/synapse/rest/client/v1/push_rule.py
@@ -39,9 +39,13 @@ class PushRuleRestServlet(ClientV1RestServlet):
         super(PushRuleRestServlet, self).__init__(hs)
         self.store = hs.get_datastore()
         self.notifier = hs.get_notifier()
+        self._is_worker = hs.config.worker_app is not None
 
     @defer.inlineCallbacks
     def on_PUT(self, request):
+        if self._is_worker:
+            raise Exception("Cannot handle PUT /push_rules on worker")
+
         spec = _rule_spec_from_path([x.decode('utf8') for x in request.postpath])
         try:
             priority_class = _priority_class_from_spec(spec)
@@ -103,6 +107,9 @@ class PushRuleRestServlet(ClientV1RestServlet):
 
     @defer.inlineCallbacks
     def on_DELETE(self, request):
+        if self._is_worker:
+            raise Exception("Cannot handle DELETE /push_rules on worker")
+
         spec = _rule_spec_from_path([x.decode('utf8') for x in request.postpath])
 
         requester = yield self.auth.get_user_by_req(request)