Topologically sort outliers in SendEventWithState

This commit is contained in:
Neil Alexander 2021-07-22 10:06:44 +01:00
parent 43ac66e0b4
commit f0c60f886a
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -54,6 +54,13 @@ func SendEventWithState(
return err 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 var ires []InputRoomEvent
for _, outlier := range outliers { for _, outlier := range outliers {
if haveEventIDs[outlier.EventID()] { if haveEventIDs[outlier.EventID()] {