mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-23 14:53:10 -06:00
Fix local room check
This commit is contained in:
parent
82062d9b53
commit
20dd71ebea
|
|
@ -335,8 +335,18 @@ func buildEvent(
|
||||||
return nil, nil, fmt.Errorf("QueryLatestEventsAndState: %w", err)
|
return nil, nil, fmt.Errorf("QueryLatestEventsAndState: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !auth.IsAnyUserOnServerWithMembership(cfg.ServerName, gomatrixserverlib.UnwrapEventHeaders(queryRes.StateEvents), "join") {
|
// If we know about any membership events in this room, check and see
|
||||||
return nil, nil, eventutil.ErrRoomNoExists
|
// 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)
|
ev, err := eventutil.BuildEvent(ctx, builder, cfg, time.Now(), &eventsNeeded, &queryRes)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue