mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-16 18:43:10 -06:00
Merge branch 'main' into neilalexander/localservernames
This commit is contained in:
commit
0bb89d750a
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -757,3 +757,4 @@ 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
|
||||
Current state appears in timeline in private history with many messages after
|
||||
Loading…
Reference in a new issue