Fix 'Invited user can reject invite over federation several times' (#1341)
parent
c60270eea3
commit
55498c8deb
|
@ -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
|
||||
|
|
|
@ -150,6 +150,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
|
||||
|
|
|
@ -33,7 +33,8 @@ type AccountData interface {
|
|||
type Invites interface {
|
||||
InsertInviteEvent(ctx context.Context, txn *sql.Tx, inviteEvent gomatrixserverlib.HeaderedEvent) (streamPos types.StreamPosition, err error)
|
||||
DeleteInviteEvent(ctx context.Context, inviteEventID string) (types.StreamPosition, error)
|
||||
// SelectInviteEventsInRange returns a map of room ID to invite events.
|
||||
// SelectInviteEventsInRange returns a map of room ID to invite events. If multiple invite/retired invites exist in the given range, return the latest value
|
||||
// for the room.
|
||||
SelectInviteEventsInRange(ctx context.Context, txn *sql.Tx, targetUserID string, r types.Range) (invites map[string]gomatrixserverlib.HeaderedEvent, retired map[string]gomatrixserverlib.HeaderedEvent, err error)
|
||||
SelectMaxInviteID(ctx context.Context, txn *sql.Tx) (id int64, err error)
|
||||
}
|
||||
|
|
|
@ -421,6 +421,7 @@ Remote users may not join unfederated rooms
|
|||
Non-numeric ports in server names are rejected
|
||||
Invited user can reject invite over federation
|
||||
Invited user can reject invite over federation for empty room
|
||||
Invited user can reject invite over federation several times
|
||||
Can reject invites over federation for rooms with version 1
|
||||
Can reject invites over federation for rooms with version 2
|
||||
Can reject invites over federation for rooms with version 3
|
||||
|
|
Loading…
Reference in New Issue