From 4253eccfb376dcd52c739733876adf1470ccf931 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Fri, 21 Jan 2022 11:26:26 +0000 Subject: [PATCH] Handle create events better --- roomserver/internal/query/query.go | 4 +--- roomserver/storage/postgres/events_table.go | 2 +- roomserver/storage/sqlite3/events_table.go | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/roomserver/internal/query/query.go b/roomserver/internal/query/query.go index 626e80473..6b4cb5816 100644 --- a/roomserver/internal/query/query.go +++ b/roomserver/internal/query/query.go @@ -150,9 +150,7 @@ func (r *Queryer) QueryMissingAuthPrevEvents( for _, prevEventID := range request.PrevEventIDs { if state, err := r.DB.StateAtEventIDs(ctx, []string{prevEventID}); err != nil || len(state) == 0 { - if state[0].EventTypeNID != types.MRoomCreateNID { - response.MissingPrevEventIDs = append(response.MissingPrevEventIDs, prevEventID) - } + response.MissingPrevEventIDs = append(response.MissingPrevEventIDs, prevEventID) } } diff --git a/roomserver/storage/postgres/events_table.go b/roomserver/storage/postgres/events_table.go index c549fb650..d100a6186 100644 --- a/roomserver/storage/postgres/events_table.go +++ b/roomserver/storage/postgres/events_table.go @@ -311,7 +311,7 @@ func (s *eventStatements) BulkSelectStateAtEventByID( ); err != nil { return nil, err } - if result.BeforeStateSnapshotNID == 0 { + if result.BeforeStateSnapshotNID == 0 && result.EventTypeNID != types.MRoomCreateNID { return nil, types.MissingEventError( fmt.Sprintf("storage: missing state for event NID %d", result.EventNID), ) diff --git a/roomserver/storage/sqlite3/events_table.go b/roomserver/storage/sqlite3/events_table.go index 3127eb17d..bd8db7bd8 100644 --- a/roomserver/storage/sqlite3/events_table.go +++ b/roomserver/storage/sqlite3/events_table.go @@ -322,7 +322,7 @@ func (s *eventStatements) BulkSelectStateAtEventByID( ); err != nil { return nil, err } - if result.BeforeStateSnapshotNID == 0 { + if result.BeforeStateSnapshotNID == 0 && result.EventTypeNID != types.MRoomCreateNID { return nil, types.MissingEventError( fmt.Sprintf("storage: missing state for event NID %d", result.EventNID), )