Only handle GET requests for /push_rules
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)
|