From 86b5ac35fb559c28c050cfa953b620596bb918d5 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Mon, 17 Aug 2020 15:07:48 +0100 Subject: [PATCH] Synchronous input room events --- roomserver/internal/perform_invite.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/roomserver/internal/perform_invite.go b/roomserver/internal/perform_invite.go index 87d0cba25..582882589 100644 --- a/roomserver/internal/perform_invite.go +++ b/roomserver/internal/perform_invite.go @@ -105,7 +105,7 @@ func (r *RoomserverInternalAPI) PerformInvite( if isOriginLocal { // check that the user is allowed to do this. We can only do this check if it is // a local invite as we have the auth events, else we have to take it on trust. - _, err = checkAuthEvents(ctx, r.DB, req.Event, req.Event.AuthEventIDs()) + _, err = checkAuthEvents(ctx, r.DB, event, event.AuthEventIDs()) if err != nil { log.WithError(err).WithField("event_id", event.EventID()).WithField("auth_event_ids", event.AuthEventIDs()).Error( "processInviteEvent.checkAuthEvents failed for event", @@ -127,7 +127,7 @@ func (r *RoomserverInternalAPI) PerformInvite( if req.SendAsServer != api.DoNotSendToOtherServers && !isTargetLocal { fsReq := &federationSenderAPI.PerformInviteRequest{ RoomVersion: req.RoomVersion, - Event: req.Event, + Event: event, InviteRoomState: inviteState, } fsRes := &federationSenderAPI.PerformInviteResponse{} @@ -158,7 +158,10 @@ func (r *RoomserverInternalAPI) PerformInvite( }, } inputRes := &api.InputRoomEventsResponse{} - go r.InputRoomEvents(context.Background(), inputReq, inputRes) // nolint:errcheck + if err := r.InputRoomEvents(context.Background(), inputReq, inputRes); isOriginLocal && err != nil { + log.WithError(err).WithField("event_id", event.EventID()).Error("r.InputRoomEvents failed") + return fmt.Errorf("r.InputRoomEvents: %w", err) + } succeeded = true return nil