Fix local room check

This commit is contained in:
Neil Alexander 2020-09-09 18:00:42 +01:00
parent 82062d9b53
commit 20dd71ebea
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -335,9 +335,19 @@ func buildEvent(
return nil, nil, fmt.Errorf("QueryLatestEventsAndState: %w", err)
}
// If we know about any membership events in this room, check and see
// if we still believe any of our users to be in the room. If not, then
// returning that the room doesn't exist will kick the room join over
// to a federated join. If we don't know about any of the membership
// events then it's probably a new local room so do nothing.
for _, ev := range queryRes.StateEvents {
if ev.Type() == gomatrixserverlib.MRoomMember {
if !auth.IsAnyUserOnServerWithMembership(cfg.ServerName, gomatrixserverlib.UnwrapEventHeaders(queryRes.StateEvents), "join") {
return nil, nil, eventutil.ErrRoomNoExists
}
break
}
}
ev, err := eventutil.BuildEvent(ctx, builder, cfg, time.Now(), &eventsNeeded, &queryRes)
if err != nil {