From 7b80e6d51ba1b71db0986df101233ed6154ed482 Mon Sep 17 00:00:00 2001 From: "Crom (Thibaut CHARLES)" Date: Wed, 10 Jan 2018 15:34:28 +0100 Subject: [PATCH] Fix timeline.limited detection Signed-off-by: Thibaut CHARLES cromfr@gmail.com --- .../syncapi/storage/output_room_events_table.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/github.com/matrix-org/dendrite/syncapi/storage/output_room_events_table.go b/src/github.com/matrix-org/dendrite/syncapi/storage/output_room_events_table.go index bc1add678..1bc5bf3ac 100644 --- a/src/github.com/matrix-org/dendrite/syncapi/storage/output_room_events_table.go +++ b/src/github.com/matrix-org/dendrite/syncapi/storage/output_room_events_table.go @@ -246,7 +246,7 @@ func (s *outputRoomEventsStatements) selectRoomRecentEvents( pq.StringArray(timelineFilter.NotSenders), pq.StringArray(timelineFilter.Types), pq.StringArray(timelineFilter.NotTypes), - timelineFilter.Limit, // TODO: limit abusive values? + timelineFilter.Limit+1, // TODO: limit abusive values? This can also be done in gomatrix.Filter.Validate ) if err != nil { return nil, false, err @@ -257,7 +257,13 @@ func (s *outputRoomEventsStatements) selectRoomRecentEvents( return nil, false, err } - return events, len(events) == timelineFilter.Limit, nil // TODO: len(events) == timelineFilter.Limit not accurate + limited := false + if len(events) > timelineFilter.Limit { + limited = true + events = events[:len(events)-1] + } + + return events, limited, nil } // Events returns the events for the given event IDs. Returns an error if any one of the event IDs given are missing