From 5b7468263e41de8314d65511f559d9a7da4e3561 Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Mon, 8 Mar 2021 17:43:07 +0000 Subject: [PATCH] roomserver: don't make_join with ourselves if clients ask us to --- roomserver/internal/perform/perform_join.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/roomserver/internal/perform/perform_join.go b/roomserver/internal/perform/perform_join.go index ada584a8c..4a7abbd44 100644 --- a/roomserver/internal/perform/perform_join.go +++ b/roomserver/internal/perform/perform_join.go @@ -151,6 +151,15 @@ func (r *Joiner) performJoinRoomByID( ctx context.Context, req *api.PerformJoinRequest, ) (string, gomatrixserverlib.ServerName, error) { + // The original client request ?server_name=... may include this HS so filter that out so we + // don't attempt to make_join with ourselves + for i, srv := range req.ServerNames { + if srv == r.Cfg.Matrix.ServerName { + // delete this entry + req.ServerNames = append(req.ServerNames[:i], req.ServerNames[i+1:]...) + } + } + // Get the domain part of the room ID. _, domain, err := gomatrixserverlib.SplitID('!', req.RoomIDOrAlias) if err != nil {