diff options
author | Till <2353100+S7evinK@users.noreply.github.com> | 2022-10-11 16:04:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-11 16:04:02 +0200 |
commit | 3c1474f68f2ac5e564d2bd4bd15f01d2a73f2845 (patch) | |
tree | 05c5c35d4bae936e652c82c53228fbfac2a6aae7 /roomserver/internal/query | |
parent | 0a9aebdf011921680e5b0646bf50d7900423aa69 (diff) |
Fix `/get_missing_events` for rooms with `joined`/`invited` history_visibility (#2787)
Sytest was using a wrong `history_visibility` for `invited`
(https://github.com/matrix-org/sytest/pull/1303), so `invited` was
passing for the wrong reason (-> defaulted to `shared`, as `invite`
wasn't understood).
This change now handles missing events like Synapse, if a server isn't
allowed to see the event, it gets a redacted version of it, making the
`get_missing_events` tests pass.
Diffstat (limited to 'roomserver/internal/query')
-rw-r--r-- | roomserver/internal/query/query.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/roomserver/internal/query/query.go b/roomserver/internal/query/query.go index 7a424a33..f4113240 100644 --- a/roomserver/internal/query/query.go +++ b/roomserver/internal/query/query.go @@ -453,7 +453,7 @@ func (r *Queryer) QueryMissingEvents( return fmt.Errorf("missing RoomInfo for room %s", events[0].RoomID()) } - resultNIDs, err := helpers.ScanEventTree(ctx, r.DB, info, front, visited, request.Limit, request.ServerName) + resultNIDs, redactEventIDs, err := helpers.ScanEventTree(ctx, r.DB, info, front, visited, request.Limit, request.ServerName) if err != nil { return err } @@ -470,7 +470,9 @@ func (r *Queryer) QueryMissingEvents( if verr != nil { return verr } - + if _, ok := redactEventIDs[event.EventID()]; ok { + event.Redact() + } response.Events = append(response.Events, event.Headered(roomVersion)) } } |