diff --git a/internal/eventutil/events.go b/internal/eventutil/events.go index e4640175..958999ee 100644 --- a/internal/eventutil/events.go +++ b/internal/eventutil/events.go @@ -72,7 +72,7 @@ func BuildEvent( return nil, err } proto.Version = verImpl - if err := addPrevEventsToEvent(proto, eventsNeeded, queryRes); err != nil { + if err = addPrevEventsToEvent(proto, eventsNeeded, queryRes); err != nil { return nil, err } diff --git a/roomserver/api/wrapper.go b/roomserver/api/wrapper.go index 8b27ebac..14115639 100644 --- a/roomserver/api/wrapper.go +++ b/roomserver/api/wrapper.go @@ -246,9 +246,7 @@ func GenerateCreateContent(ctx context.Context, roomVer gomatrixserverlib.RoomVe var finalAdditionalCreators []string creatorsSet := make(map[string]struct{}) var unverifiedCreators []string - for _, add := range additionalCreators { - unverifiedCreators = append(unverifiedCreators, add) - } + unverifiedCreators = append(unverifiedCreators, additionalCreators...) // they get added to any additional creators specified already existingAdditionalCreators, ok := createContent["additional_creators"].([]any) if ok { diff --git a/roomserver/internal/perform/perform_create_room.go b/roomserver/internal/perform/perform_create_room.go index aac81253..aabd92f1 100644 --- a/roomserver/internal/perform/perform_create_room.go +++ b/roomserver/internal/perform/perform_create_room.go @@ -90,7 +90,7 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo createEvent gomatrixserverlib.PDU jsonErr *util.JSONResponse ) - authEvents, err := gomatrixserverlib.NewAuthEvents(nil) + authEvents, _ := gomatrixserverlib.NewAuthEvents(nil) if createRequest.CreateEvent != nil { createEvent, err = verImpl.NewEventFromTrustedJSON(createRequest.CreateEvent, false) if err != nil { @@ -100,15 +100,21 @@ func (c *Creator) PerformCreateRoom(ctx context.Context, userID spec.UserID, roo JSON: spec.InternalServerError{}, } } - authEvents.AddEvent(createEvent) + if err = authEvents.AddEvent(createEvent); err != nil { + util.GetLogger(ctx).WithError(err).Error("gomatrixserverlib.AuthEvents.AddEvent failed") + return "", &util.JSONResponse{ + Code: http.StatusInternalServerError, + JSON: spec.InternalServerError{}, + } + } } else { var additionalCreators []string if createRequest.StatePreset == spec.PresetTrustedPrivateChat { additionalCreators = createRequest.InvitedUsers } - createContent, err := api.GenerateCreateContent(ctx, createRequest.RoomVersion, string(senderID), createRequest.CreationContent, additionalCreators) - if err != nil { - util.GetLogger(ctx).WithError(err).Error("GenerateCreateContent failed") + createContent, contentErr := api.GenerateCreateContent(ctx, createRequest.RoomVersion, string(senderID), createRequest.CreationContent, additionalCreators) + if contentErr != nil { + util.GetLogger(ctx).WithError(contentErr).Error("GenerateCreateContent failed") return "", &util.JSONResponse{ Code: http.StatusBadRequest, JSON: spec.BadJSON("invalid create content"), diff --git a/roomserver/internal/perform/perform_upgrade.go b/roomserver/internal/perform/perform_upgrade.go index 552e5437..dd26dd3a 100644 --- a/roomserver/internal/perform/perform_upgrade.go +++ b/roomserver/internal/perform/perform_upgrade.go @@ -70,7 +70,7 @@ func (r *Upgrader) performRoomUpgrade( RoomID: roomID, } oldRoomRes := &api.QueryLatestEventsAndStateResponse{} - if err := r.URSAPI.QueryLatestEventsAndState(ctx, oldRoomReq, oldRoomRes); err != nil { + if err = r.URSAPI.QueryLatestEventsAndState(ctx, oldRoomReq, oldRoomRes); err != nil { return "", fmt.Errorf("Failed to get latest state: %s", err) } var oldCreateEvent *types.HeaderedEvent @@ -98,7 +98,7 @@ func (r *Upgrader) performRoomUpgrade( } `json:"predecessor"` }{} // keep existing values in old room e.g type/m.federate - if err := json.Unmarshal(oldCreateEvent.Content(), &content); err != nil { + if err = json.Unmarshal(oldCreateEvent.Content(), &content); err != nil { return "", fmt.Errorf("failed to copy old create event content to new create event: %s", err) } content.Predecessor.RoomID = roomID @@ -373,8 +373,8 @@ func (r *Upgrader) userIsAuthorized(ctx context.Context, senderID spec.SenderID, // Return the events to create AFTER the new create event // nolint:gocyclo func (r *Upgrader) generateInitialEvents( - ctx context.Context, oldRoom *api.QueryLatestEventsAndStateResponse, senderID spec.SenderID, roomID string, newVersion gomatrixserverlib.RoomVersion, - tombstoneEvent *types.HeaderedEvent, creators []string) ([]gomatrixserverlib.FledglingEvent, error) { + ctx context.Context, oldRoom *api.QueryLatestEventsAndStateResponse, senderID spec.SenderID, _ string, newVersion gomatrixserverlib.RoomVersion, + _ *types.HeaderedEvent, creators []string) ([]gomatrixserverlib.FledglingEvent, error) { state := make(map[gomatrixserverlib.StateKeyTuple]*types.HeaderedEvent, len(oldRoom.StateEvents)) for _, event := range oldRoom.StateEvents {