From f0c60f886a8535a390abc14cfb2f069607658cce Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Thu, 22 Jul 2021 10:06:44 +0100 Subject: [PATCH] Topologically sort outliers in SendEventWithState --- roomserver/api/wrapper.go | 7 +++++++ 1 file changed, 7 insertions(+) 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()] {