diff options
author | Erik Johnston <erik@matrix.org> | 2017-06-19 12:36:28 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2017-06-19 12:37:27 +0100 |
commit | d7fe6b356c5b74ffc5681f85a0d6100f4b4f2295 (patch) | |
tree | d5695155a2dc3779be156bef18445a102660c6e3 /synapse/handlers | |
parent | add missing boolean to synapse_port_db (diff) | |
download | synapse-d7fe6b356c5b74ffc5681f85a0d6100f4b4f2295.tar.xz |
Add shutdown room API
Diffstat (limited to 'synapse/handlers')
-rw-r--r-- | synapse/handlers/federation.py | 4 | ||||
-rw-r--r-- | synapse/handlers/room_member.py | 5 |
2 files changed, 9 insertions, 0 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 39d2bee8da..f7ae369a1d 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -1068,6 +1068,10 @@ class FederationHandler(BaseHandler): """ event = pdu + is_blocked = yield self.store.is_room_blocked(event.room_id) + if is_blocked: + raise SynapseError(403, "This room has been blocked on this server") + event.internal_metadata.outlier = True event.internal_metadata.invite_from_remote = True diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index 1ca88517a2..c0d9c08367 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -203,6 +203,11 @@ class RoomMemberHandler(BaseHandler): if not remote_room_hosts: remote_room_hosts = [] + if effective_membership_state not in ("leave", "ban",): + is_blocked = yield self.store.is_room_blocked(room_id) + if is_blocked: + raise SynapseError(403, "This room has been blocked on this server") + latest_event_ids = yield self.store.get_latest_event_ids_in_room(room_id) current_state_ids = yield self.state_handler.get_current_state_ids( room_id, latest_event_ids=latest_event_ids, |