aboutsummaryrefslogtreecommitdiff
path: root/roomserver/internal/query
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2022-10-11 16:04:02 +0200
committerGitHub <noreply@github.com>2022-10-11 16:04:02 +0200
commit3c1474f68f2ac5e564d2bd4bd15f01d2a73f2845 (patch)
tree05c5c35d4bae936e652c82c53228fbfac2a6aae7 /roomserver/internal/query
parent0a9aebdf011921680e5b0646bf50d7900423aa69 (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.go6
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))
}
}