From 3747ab18969692c53c8a2b218ba3916348df2e6b Mon Sep 17 00:00:00 2001 From: Kegan Dougal Date: Mon, 19 Jul 2021 11:31:07 +0100 Subject: [PATCH] handle send_join errors too --- federationapi/routing/join.go | 29 ++++++++++++++++------- roomserver/internal/helpers/auth.go | 3 --- roomserver/internal/input/input_events.go | 2 -- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/federationapi/routing/join.go b/federationapi/routing/join.go index a8f850fb0..1ef1fe40e 100644 --- a/federationapi/routing/join.go +++ b/federationapi/routing/join.go @@ -26,6 +26,7 @@ import ( "github.com/matrix-org/dendrite/setup/config" "github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/util" + "github.com/sirupsen/logrus" ) // MakeJoin implements the /make_join API @@ -296,16 +297,26 @@ func SendJoin( // We are responsible for notifying other servers that the user has joined // the room, so set SendAsServer to cfg.Matrix.ServerName if !alreadyJoined { - if err = api.SendEvents( - httpReq.Context(), rsAPI, - api.KindNew, - []*gomatrixserverlib.HeaderedEvent{ - event.Headered(stateAndAuthChainResponse.RoomVersion), + var response api.InputRoomEventsResponse + rsAPI.InputRoomEvents(httpReq.Context(), &api.InputRoomEventsRequest{ + InputRoomEvents: []api.InputRoomEvent{ + { + Kind: api.KindNew, + Event: event.Headered(stateAndAuthChainResponse.RoomVersion), + AuthEventIDs: event.AuthEventIDs(), + SendAsServer: string(cfg.Matrix.ServerName), + TransactionID: nil, + }, }, - cfg.Matrix.ServerName, - nil, - ); err != nil { - util.GetLogger(httpReq.Context()).WithError(err).Error("SendEvents failed") + }, &response) + if response.ErrMsg != "" { + util.GetLogger(httpReq.Context()).WithField(logrus.ErrorKey, response.ErrMsg).Error("SendEvents failed") + if response.NotAllowed { + return util.JSONResponse{ + Code: http.StatusBadRequest, + JSON: jsonerror.Forbidden(response.ErrMsg), + } + } return jsonerror.InternalServerError() } } diff --git a/roomserver/internal/helpers/auth.go b/roomserver/internal/helpers/auth.go index 6d9fd4275..1f4215e74 100644 --- a/roomserver/internal/helpers/auth.go +++ b/roomserver/internal/helpers/auth.go @@ -23,7 +23,6 @@ import ( "github.com/matrix-org/dendrite/roomserver/storage" "github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/gomatrixserverlib" - "github.com/sirupsen/logrus" ) // CheckForSoftFail returns true if the event should be soft-failed @@ -115,8 +114,6 @@ func CheckAuthEvents( // Check if the event is allowed. if err = gomatrixserverlib.Allowed(event.Event, &authEvents); err != nil { - _, na := err.(*gomatrixserverlib.NotAllowed) - logrus.Warnf("CheckAuthEvents failed Allowed check, NotAllowed=%v", na) return nil, err } diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go index eb870dc14..2a558c483 100644 --- a/roomserver/internal/input/input_events.go +++ b/roomserver/internal/input/input_events.go @@ -187,8 +187,6 @@ func (r *Inputer) processRoomEvent( "soft_fail": softfail, "sender": event.Sender(), }).Debug("Stored rejected event") - _, na := rejectionErr.(*gomatrixserverlib.NotAllowed) - logrus.Warnf("NotAllowed=%v", na) return event.EventID(), rejectionErr }