handle send_join errors too

This commit is contained in:
Kegan Dougal 2021-07-19 11:31:07 +01:00
parent b79cb408f2
commit 3747ab1896
3 changed files with 20 additions and 14 deletions

View file

@ -26,6 +26,7 @@ import (
"github.com/matrix-org/dendrite/setup/config" "github.com/matrix-org/dendrite/setup/config"
"github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util" "github.com/matrix-org/util"
"github.com/sirupsen/logrus"
) )
// MakeJoin implements the /make_join API // MakeJoin implements the /make_join API
@ -296,16 +297,26 @@ func SendJoin(
// We are responsible for notifying other servers that the user has joined // We are responsible for notifying other servers that the user has joined
// the room, so set SendAsServer to cfg.Matrix.ServerName // the room, so set SendAsServer to cfg.Matrix.ServerName
if !alreadyJoined { if !alreadyJoined {
if err = api.SendEvents( var response api.InputRoomEventsResponse
httpReq.Context(), rsAPI, rsAPI.InputRoomEvents(httpReq.Context(), &api.InputRoomEventsRequest{
api.KindNew, InputRoomEvents: []api.InputRoomEvent{
[]*gomatrixserverlib.HeaderedEvent{ {
event.Headered(stateAndAuthChainResponse.RoomVersion), Kind: api.KindNew,
Event: event.Headered(stateAndAuthChainResponse.RoomVersion),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(cfg.Matrix.ServerName),
TransactionID: nil,
}, },
cfg.Matrix.ServerName, },
nil, }, &response)
); err != nil { if response.ErrMsg != "" {
util.GetLogger(httpReq.Context()).WithError(err).Error("SendEvents failed") 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() return jsonerror.InternalServerError()
} }
} }

View file

@ -23,7 +23,6 @@ import (
"github.com/matrix-org/dendrite/roomserver/storage" "github.com/matrix-org/dendrite/roomserver/storage"
"github.com/matrix-org/dendrite/roomserver/types" "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/gomatrixserverlib" "github.com/matrix-org/gomatrixserverlib"
"github.com/sirupsen/logrus"
) )
// CheckForSoftFail returns true if the event should be soft-failed // CheckForSoftFail returns true if the event should be soft-failed
@ -115,8 +114,6 @@ func CheckAuthEvents(
// Check if the event is allowed. // Check if the event is allowed.
if err = gomatrixserverlib.Allowed(event.Event, &authEvents); err != nil { 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 return nil, err
} }

View file

@ -187,8 +187,6 @@ func (r *Inputer) processRoomEvent(
"soft_fail": softfail, "soft_fail": softfail,
"sender": event.Sender(), "sender": event.Sender(),
}).Debug("Stored rejected event") }).Debug("Stored rejected event")
_, na := rejectionErr.(*gomatrixserverlib.NotAllowed)
logrus.Warnf("NotAllowed=%v", na)
return event.EventID(), rejectionErr return event.EventID(), rejectionErr
} }