From 7df3e691f218c7af7337ca2729d1cbaf3586726f Mon Sep 17 00:00:00 2001 From: kegsay Date: Tue, 13 Jul 2021 12:22:27 +0100 Subject: [PATCH] Fix failing complement test (#1917) Specifically `TestBannedUserCannotSendJoin` --- federationapi/routing/join.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/federationapi/routing/join.go b/federationapi/routing/join.go index e94140331..a8f850fb0 100644 --- a/federationapi/routing/join.go +++ b/federationapi/routing/join.go @@ -271,17 +271,27 @@ func SendJoin( // Check if the user is already in the room. If they're already in then // there isn't much point in sending another join event into the room. + // Also check to see if they are banned: if they are then we reject them. alreadyJoined := false + isBanned := false for _, se := range stateAndAuthChainResponse.StateEvents { if !se.StateKeyEquals(*event.StateKey()) { continue } if membership, merr := se.Membership(); merr == nil { alreadyJoined = (membership == gomatrixserverlib.Join) + isBanned = (membership == gomatrixserverlib.Ban) break } } + if isBanned { + return util.JSONResponse{ + Code: http.StatusForbidden, + JSON: jsonerror.Forbidden("user is banned"), + } + } + // Send the events to the room server. // We are responsible for notifying other servers that the user has joined // the room, so set SendAsServer to cfg.Matrix.ServerName