mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-29 12:42:46 +00:00
Track knocking in membership updater (#1935)
* Topologically sort outliers in SendEventWithState * Knock in membership updater * Update gomatrixserverlib * Update gomatrixserverlib * Get the NID of the knock event properly for the membership updater
This commit is contained in:
parent
43ac66e0b4
commit
39e8d1cc6f
5 changed files with 47 additions and 3 deletions
|
@ -136,6 +136,8 @@ func (r *Inputer) updateMembership(
|
|||
return updateToJoinMembership(mu, add, updates)
|
||||
case gomatrixserverlib.Leave, gomatrixserverlib.Ban:
|
||||
return updateToLeaveMembership(mu, add, newMembership, updates)
|
||||
case gomatrixserverlib.Knock:
|
||||
return updateToKnockMembership(mu, add, updates)
|
||||
default:
|
||||
panic(fmt.Errorf(
|
||||
"input: membership %q is not one of the allowed values", newMembership,
|
||||
|
@ -220,6 +222,18 @@ func updateToLeaveMembership(
|
|||
return updates, nil
|
||||
}
|
||||
|
||||
func updateToKnockMembership(
|
||||
mu *shared.MembershipUpdater, add *gomatrixserverlib.Event, updates []api.OutputEvent,
|
||||
) ([]api.OutputEvent, error) {
|
||||
if mu.IsLeave() {
|
||||
_, err := mu.SetToKnock(add)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return updates, nil
|
||||
}
|
||||
|
||||
// membershipChanges pairs up the membership state changes.
|
||||
func membershipChanges(removed, added []types.StateEntry) []stateChange {
|
||||
changes := pairUpChanges(removed, added)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue