From eabda06b59e632b90f921ad2e9b820af3f3d55cc Mon Sep 17 00:00:00 2001 From: Devon Hudson Date: Mon, 8 May 2023 12:22:51 -0600 Subject: [PATCH] Create a reusable error for invalid room info --- roomserver/internal/helpers/auth.go | 2 +- roomserver/internal/helpers/helpers.go | 4 ++-- roomserver/internal/input/input_events.go | 2 +- roomserver/internal/perform/perform_backfill.go | 2 +- roomserver/internal/perform/perform_invite.go | 2 +- roomserver/state/state.go | 4 ++-- roomserver/storage/shared/room_updater.go | 2 +- roomserver/storage/shared/storage.go | 2 +- roomserver/types/types.go | 3 +++ 9 files changed, 13 insertions(+), 10 deletions(-) diff --git a/roomserver/internal/helpers/auth.go b/roomserver/internal/helpers/auth.go index edb7eae00..24958091b 100644 --- a/roomserver/internal/helpers/auth.go +++ b/roomserver/internal/helpers/auth.go @@ -221,7 +221,7 @@ func loadAuthEvents( } if roomInfo == nil { - err = fmt.Errorf("cannot get events without room info") + err = types.ErrorInvalidRoomInfo return } if result.events, err = db.Events(ctx, roomInfo.RoomVersion, eventNIDs); err != nil { diff --git a/roomserver/internal/helpers/helpers.go b/roomserver/internal/helpers/helpers.go index bb550f4ae..95397cd5e 100644 --- a/roomserver/internal/helpers/helpers.go +++ b/roomserver/internal/helpers/helpers.go @@ -184,7 +184,7 @@ func GetMembershipsAtState( // Get all of the events in this state if roomInfo == nil { - return nil, fmt.Errorf("cannot get events without room info") + return nil, types.ErrorInvalidRoomInfo } stateEvents, err := db.Events(ctx, roomInfo.RoomVersion, eventNIDs) if err != nil { @@ -239,7 +239,7 @@ func LoadEvents( ctx context.Context, db storage.RoomDatabase, roomInfo *types.RoomInfo, eventNIDs []types.EventNID, ) ([]gomatrixserverlib.PDU, error) { if roomInfo == nil { - return nil, fmt.Errorf("cannot get events without room info") + return nil, types.ErrorInvalidRoomInfo } stateEvents, err := db.Events(ctx, roomInfo.RoomVersion, eventNIDs) if err != nil { diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go index 9a706137a..c8f5737ff 100644 --- a/roomserver/internal/input/input_events.go +++ b/roomserver/internal/input/input_events.go @@ -806,7 +806,7 @@ func (r *Inputer) kickGuests(ctx context.Context, event gomatrixserverlib.PDU, r } if roomInfo == nil { - return fmt.Errorf("cannot get events without room info") + return types.ErrorInvalidRoomInfo } memberEvents, err := r.DB.Events(ctx, roomInfo.RoomVersion, membershipNIDs) if err != nil { diff --git a/roomserver/internal/perform/perform_backfill.go b/roomserver/internal/perform/perform_backfill.go index c808cc160..fb579f03a 100644 --- a/roomserver/internal/perform/perform_backfill.go +++ b/roomserver/internal/perform/perform_backfill.go @@ -564,7 +564,7 @@ func joinEventsFromHistoryVisibility( // Get all of the events in this state if roomInfo == nil { - return nil, gomatrixserverlib.HistoryVisibilityJoined, fmt.Errorf("cannot get events without room info") + return nil, gomatrixserverlib.HistoryVisibilityJoined, types.ErrorInvalidRoomInfo } stateEvents, err := db.Events(ctx, roomInfo.RoomVersion, eventNIDs) if err != nil { diff --git a/roomserver/internal/perform/perform_invite.go b/roomserver/internal/perform/perform_invite.go index 55c16f820..db0b53fef 100644 --- a/roomserver/internal/perform/perform_invite.go +++ b/roomserver/internal/perform/perform_invite.go @@ -270,7 +270,7 @@ func buildInviteStrippedState( stateNIDs = append(stateNIDs, stateNID.EventNID) } if info == nil { - return nil, fmt.Errorf("cannot get events without room info") + return nil, types.ErrorInvalidRoomInfo } stateEvents, err := db.Events(ctx, info.RoomVersion, stateNIDs) if err != nil { diff --git a/roomserver/state/state.go b/roomserver/state/state.go index 50eae035f..f38d8f96a 100644 --- a/roomserver/state/state.go +++ b/roomserver/state/state.go @@ -86,7 +86,7 @@ func (p *StateResolution) Resolve(ctx context.Context, eventID string) (*gomatri } if p.roomInfo == nil { - return nil, fmt.Errorf("cannot get events without room info") + return nil, types.ErrorInvalidRoomInfo } events, err := p.db.Events(ctx, p.roomInfo.RoomVersion, []types.EventNID{plNID}) if err != nil { @@ -1139,7 +1139,7 @@ func (v *StateResolution) loadStateEvents( } if v.roomInfo == nil { - return nil, nil, fmt.Errorf("cannot get events without room info") + return nil, nil, types.ErrorInvalidRoomInfo } events, err := v.db.Events(ctx, v.roomInfo.RoomVersion, eventNIDs) if err != nil { diff --git a/roomserver/storage/shared/room_updater.go b/roomserver/storage/shared/room_updater.go index d83e859ef..5a20c67b3 100644 --- a/roomserver/storage/shared/room_updater.go +++ b/roomserver/storage/shared/room_updater.go @@ -118,7 +118,7 @@ func (u *RoomUpdater) StorePreviousEvents(eventNID types.EventNID, previousEvent func (u *RoomUpdater) Events(ctx context.Context, _ gomatrixserverlib.RoomVersion, eventNIDs []types.EventNID) ([]types.Event, error) { if u.roomInfo == nil { - return nil, fmt.Errorf("cannot get events without room info") + return nil, types.ErrorInvalidRoomInfo } return u.d.events(ctx, u.txn, u.roomInfo.RoomVersion, eventNIDs) } diff --git a/roomserver/storage/shared/storage.go b/roomserver/storage/shared/storage.go index 69f05b419..60e46c478 100644 --- a/roomserver/storage/shared/storage.go +++ b/roomserver/storage/shared/storage.go @@ -393,7 +393,7 @@ func (d *EventDatabase) eventsFromIDs(ctx context.Context, txn *sql.Tx, roomInfo } if roomInfo == nil { - return nil, fmt.Errorf("cannot get events without room info") + return nil, types.ErrorInvalidRoomInfo } return d.events(ctx, txn, roomInfo.RoomVersion, nids) } diff --git a/roomserver/types/types.go b/roomserver/types/types.go index 349345854..e986b9da7 100644 --- a/roomserver/types/types.go +++ b/roomserver/types/types.go @@ -17,6 +17,7 @@ package types import ( "encoding/json" + "fmt" "sort" "strings" "sync" @@ -328,3 +329,5 @@ func (r *RoomInfo) CopyFrom(r2 *RoomInfo) { r.stateSnapshotNID = r2.stateSnapshotNID r.isStub = r2.isStub } + +var ErrorInvalidRoomInfo = fmt.Errorf("room info is invalid")