diff options
author | Kegsay <kegan@matrix.org> | 2020-08-25 18:59:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-25 18:59:00 +0100 |
commit | 55498c8deb262e564e1b79bf4409eb5593f3034e (patch) | |
tree | b02e7f2cd5ee0508c43c0730bee7ea6d603dc1e3 /syncapi/storage/postgres | |
parent | c60270eea31f062f176b59e69e9d9e9e43b4b004 (diff) |
Fix 'Invited user can reject invite over federation several times' (#1341)
Diffstat (limited to 'syncapi/storage/postgres')
-rw-r--r-- | syncapi/storage/postgres/invites_table.go | 8 |
1 files changed, 8 insertions, 0 deletions
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 |