Merge branch 'neilalexander/localservernames' of github.com:matrix-org/dendrite into neilalexander/localservernames

This commit is contained in:
Neil Alexander 2022-10-26 12:38:06 +01:00
commit 78d6d6b710
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
3 changed files with 18 additions and 9 deletions

View file

@ -109,6 +109,12 @@ func GetMemberships(
}
if joinedOnly {
if !queryRes.IsInRoom {
return util.JSONResponse{
Code: http.StatusForbidden,
JSON: jsonerror.Forbidden("You aren't a member of the room and weren't previously a member of the room."),
}
}
var res getJoinedMembersResponse
res.Joined = make(map[string]joinedMember)
for _, ev := range result {

View file

@ -227,14 +227,10 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
stateFilter *gomatrixserverlib.StateFilter,
req *types.SyncRequest,
) (types.StreamPosition, error) {
if delta.MembershipPos > 0 && delta.Membership == gomatrixserverlib.Leave {
// make sure we don't leak recent events after the leave event.
// TODO: History visibility makes this somewhat complex to handle correctly. For example:
// TODO: This doesn't work for join -> leave in a single /sync request (see events prior to join).
// TODO: This will fail on join -> leave -> sensitive msg -> join -> leave
// in a single /sync request
// This is all "okay" assuming history_visibility == "shared" which it is by default.
r.To = delta.MembershipPos
originalLimit := eventFilter.Limit
if r.Backwards {
eventFilter.Limit = int(r.From - r.To)
}
recentStreamEvents, limited, err := snapshot.RecentEvents(
ctx, delta.RoomID, r,
@ -303,6 +299,12 @@ func (p *PDUStreamProvider) addRoomDeltaToResponse(
logrus.WithError(err).Error("unable to apply history visibility filter")
}
if r.Backwards && len(events) > originalLimit {
// We're going backwards and the events are ordered chronologically, so take the last `limit` events
events = events[len(events)-originalLimit:]
limited = true
}
if len(delta.StateEvents) > 0 {
updateLatestPosition(delta.StateEvents[len(delta.StateEvents)-1].EventID())
}

View file

@ -756,4 +756,5 @@ Notifications can be viewed with GET /notifications
Can get rooms/{roomId}/messages for a departed room (SPEC-216)
Local device key changes appear in /keys/changes
Can get rooms/{roomId}/members at a given point
Can filter rooms/{roomId}/members
Can filter rooms/{roomId}/members
Current state appears in timeline in private history with many messages after