From 55498c8deb262e564e1b79bf4409eb5593f3034e Mon Sep 17 00:00:00 2001 From: Kegsay Date: Tue, 25 Aug 2020 18:59:00 +0100 Subject: Fix 'Invited user can reject invite over federation several times' (#1341) --- syncapi/storage/postgres/invites_table.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'syncapi/storage/postgres') diff --git a/syncapi/storage/postgres/invites_table.go b/syncapi/storage/postgres/invites_table.go index 530dc645..eed58c15 100644 --- a/syncapi/storage/postgres/invites_table.go +++ b/syncapi/storage/postgres/invites_table.go @@ -139,6 +139,14 @@ func (s *inviteEventsStatements) SelectInviteEventsInRange( return nil, nil, err } + // if we have seen this room before, it has a higher stream position and hence takes priority + // because the query is ORDER BY id DESC so drop them + _, isRetired := retired[roomID] + _, isInvited := result[roomID] + if isRetired || isInvited { + continue + } + var event gomatrixserverlib.HeaderedEvent if err := json.Unmarshal(eventJSON, &event); err != nil { return nil, nil, err -- cgit v1.2.3