diff --git a/roomserver/internal/query/query.go b/roomserver/internal/query/query.go index 6b4cb581..b9eac339 100644 --- a/roomserver/internal/query/query.go +++ b/roomserver/internal/query/query.go @@ -149,8 +149,14 @@ func (r *Queryer) QueryMissingAuthPrevEvents( } for _, prevEventID := range request.PrevEventIDs { - if state, err := r.DB.StateAtEventIDs(ctx, []string{prevEventID}); err != nil || len(state) == 0 { + if eventTypes, err := r.DB.EventTypeNIDs(ctx, []string{prevEventID}); err != nil || len(eventTypes) == 0 { response.MissingPrevEventIDs = append(response.MissingPrevEventIDs, prevEventID) + } else if eventTypes[prevEventID] != types.MRoomCreateNID { + // We only want to check for missing state for events that aren't create + // events, because there is no state before a create event + if state, err := r.DB.StateAtEventIDs(ctx, []string{prevEventID}); err != nil || len(state) == 0 { + response.MissingPrevEventIDs = append(response.MissingPrevEventIDs, prevEventID) + } } }