Correctly identify create events when checking for state

This commit is contained in:
Neil Alexander 2022-01-27 13:33:15 +00:00
parent ffe93f103f
commit fb168a504d
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
2 changed files with 6 additions and 2 deletions

View file

@ -311,7 +311,9 @@ func (s *eventStatements) BulkSelectStateAtEventByID(
); err != nil {
return nil, err
}
if result.BeforeStateSnapshotNID == 0 && result.EventTypeNID != types.MRoomCreateNID {
// Genuine create events are the only case where it's OK to have no previous state.
isCreate := result.EventTypeNID == types.MRoomCreateNID && result.EventStateKeyNID == 1
if result.BeforeStateSnapshotNID == 0 && !isCreate {
return nil, types.MissingEventError(
fmt.Sprintf("storage: missing state for event NID %d", result.EventNID),
)

View file

@ -322,7 +322,9 @@ func (s *eventStatements) BulkSelectStateAtEventByID(
); err != nil {
return nil, err
}
if result.BeforeStateSnapshotNID == 0 && result.EventTypeNID != types.MRoomCreateNID {
// Genuine create events are the only case where it's OK to have no previous state.
isCreate := result.EventTypeNID == types.MRoomCreateNID && result.EventStateKeyNID == 1
if result.BeforeStateSnapshotNID == 0 && !isCreate {
return nil, types.MissingEventError(
fmt.Sprintf("storage: missing state for event NID %d", result.EventNID),
)