diff options
author | David Baker <dbkr@users.noreply.github.com> | 2017-10-05 14:14:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-05 14:14:13 +0100 |
commit | 5de926d66f6a2bb269b06f6fc40c0c5e6de1ecc8 (patch) | |
tree | 6c829162c74a5d9f1abcd36bc55a0883ac164e5a /synapse/handlers/federation.py | |
parent | Merge pull request #2500 from matrix-org/dbkr/fix_word_boundary_mentions (diff) | |
parent | Spam checking: add the invitee to user_may_invite (diff) | |
download | synapse-5de926d66f6a2bb269b06f6fc40c0c5e6de1ecc8.tar.xz |
Merge pull request #2502 from matrix-org/dbkr/allow_dms_to_admins
Spam checking: add the invitee to user_may_invite
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 737fe518ef..8fccf8bab3 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -1071,6 +1071,9 @@ class FederationHandler(BaseHandler): """ event = pdu + if event.state_key is None: + raise SynapseError(400, "The invite event did not have a state key") + 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") @@ -1078,9 +1081,11 @@ class FederationHandler(BaseHandler): if self.hs.config.block_non_admin_invites: raise SynapseError(403, "This server does not accept room invites") - if not self.spam_checker.user_may_invite(event.sender, event.room_id): + if not self.spam_checker.user_may_invite( + event.sender, event.state_key, event.room_id, + ): raise SynapseError( - 403, "This user is not permitted to send invites to this server" + 403, "This user is not permitted to send invites to this server/user" ) membership = event.content.get("membership") @@ -1091,9 +1096,6 @@ class FederationHandler(BaseHandler): if sender_domain != origin: raise SynapseError(400, "The invite event was not from the server sending it") - if event.state_key is None: - raise SynapseError(400, "The invite event did not have a state key") - if not self.is_mine_id(event.state_key): raise SynapseError(400, "The invite event must be for this server") |