summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-04-26 18:12:33 +0100
committerErik Johnston <erik@matrix.org>2019-04-26 18:12:33 +0100
commitd75fb8ae22fb03c98b7dab2c0f1406ce8d685a76 (patch)
tree7acbb0f067dd7659ffa51d726fe9a7208ea35b2d
parentMerge branch 'erikj/postpath' of github.com:matrix-org/synapse into matrix-or... (diff)
parentNewsfile (diff)
downloadsynapse-d75fb8ae22fb03c98b7dab2c0f1406ce8d685a76.tar.xz
Merge branch 'erikj/ratelimit_3pid_invite' of github.com:matrix-org/synapse into matrix-org-hotfixes
-rw-r--r--changelog.d/5104.bugfix1
-rw-r--r--synapse/handlers/room_member.py10
2 files changed, 11 insertions, 0 deletions
diff --git a/changelog.d/5104.bugfix b/changelog.d/5104.bugfix
new file mode 100644

index 0000000000..f88aca8a40 --- /dev/null +++ b/changelog.d/5104.bugfix
@@ -0,0 +1 @@ +Fix the ratelimting on third party invites. diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py
index ab1f993aaf..0ca24e706a 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py
@@ -33,6 +33,8 @@ from synapse.types import RoomID, UserID from synapse.util.async_helpers import Linearizer from synapse.util.distributor import user_joined_room, user_left_room +from ._base import BaseHandler + logger = logging.getLogger(__name__) id_server_scheme = "https://" @@ -72,6 +74,11 @@ class RoomMemberHandler(object): self.spam_checker = hs.get_spam_checker() self._server_notices_mxid = self.config.server_notices_mxid + # This is only used to get at ratelimit function, and + # maybe_kick_guest_users. It's fine there are multiple of these as + # it doesn't store state. + self.base_handler = BaseHandler(hs) + @abc.abstractmethod def _remote_join(self, requester, remote_room_hosts, room_id, user, content): """Try and join a room that this server is not in @@ -722,6 +729,9 @@ class RoomMemberHandler(object): Codes.FORBIDDEN, ) + # Check whether we'll be ratelimited + yield self.base_handler.ratelimit(requester, update=False) + invitee = yield self._lookup_3pid( id_server, medium, address )