mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-10 23:53:09 -06:00
Fix statekey usage in roomserver/input_membership
This commit is contained in:
parent
5e9b7d714f
commit
d2bbf9e315
|
|
@ -18,7 +18,6 @@ import (
|
|||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
"github.com/matrix-org/gomatrixserverlib/spec"
|
||||
|
||||
"github.com/matrix-org/dendrite/internal"
|
||||
|
|
@ -72,7 +71,7 @@ func (r *Inputer) updateMemberships(
|
|||
if change.addedEventNID != 0 {
|
||||
ae, _ = helpers.EventMap(events).Lookup(change.addedEventNID)
|
||||
}
|
||||
if updates, err = r.updateMembership(updater, targetUserNID, re, ae, updates); err != nil {
|
||||
if updates, err = r.updateMembership(ctx, updater, targetUserNID, re, ae, updates); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
|
@ -80,6 +79,7 @@ func (r *Inputer) updateMemberships(
|
|||
}
|
||||
|
||||
func (r *Inputer) updateMembership(
|
||||
ctx context.Context,
|
||||
updater *shared.RoomUpdater,
|
||||
targetUserNID types.EventStateKeyNID,
|
||||
remove, add *types.Event,
|
||||
|
|
@ -97,7 +97,7 @@ func (r *Inputer) updateMembership(
|
|||
|
||||
var targetLocal bool
|
||||
if add != nil {
|
||||
targetLocal = r.isLocalTarget(add)
|
||||
targetLocal = r.isLocalTarget(ctx, add)
|
||||
}
|
||||
|
||||
mu, err := updater.MembershipUpdater(targetUserNID, targetLocal)
|
||||
|
|
@ -136,11 +136,14 @@ func (r *Inputer) updateMembership(
|
|||
}
|
||||
}
|
||||
|
||||
func (r *Inputer) isLocalTarget(event *types.Event) bool {
|
||||
func (r *Inputer) isLocalTarget(ctx context.Context, event *types.Event) bool {
|
||||
isTargetLocalUser := false
|
||||
if statekey := event.StateKey(); statekey != nil {
|
||||
_, domain, _ := gomatrixserverlib.SplitID('@', *statekey)
|
||||
isTargetLocalUser = domain == r.ServerName
|
||||
userID, err := r.Queryer.QueryUserIDForSender(ctx, event.RoomID(), spec.SenderID(*statekey))
|
||||
if err != nil || userID == nil {
|
||||
return isTargetLocalUser
|
||||
}
|
||||
isTargetLocalUser = userID.Domain() == r.ServerName
|
||||
}
|
||||
return isTargetLocalUser
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue