diff --git a/roomserver/api/wrapper.go b/roomserver/api/wrapper.go index 2ebe2f648..f56f66556 100644 --- a/roomserver/api/wrapper.go +++ b/roomserver/api/wrapper.go @@ -54,6 +54,13 @@ func SendEventWithState( return err } + // The roomserver processes events strictly in the order they are given, + // so we need to make sure that events don't refer to auth events that + // the roomserver doesn't know about yet. + outliers = gomatrixserverlib.ReverseTopologicalOrdering( + outliers, gomatrixserverlib.TopologicalOrderByAuthEvents, + ) + var ires []InputRoomEvent for _, outlier := range outliers { if haveEventIDs[outlier.EventID()] {