Review comments

This commit is contained in:
Neil Alexander 2020-05-20 17:45:13 +01:00
parent facfea265f
commit 7f7a49f999
3 changed files with 10 additions and 6 deletions

View file

@ -120,7 +120,11 @@ func (r *RoomserverInternalAPI) calculateAndSetState(
// Check here if we think we're in the room already. // Check here if we think we're in the room already.
stateAtEvent.Overwrite = true stateAtEvent.Overwrite = true
var joinEventNIDs []types.EventNID var joinEventNIDs []types.EventNID
// Request join memberships only for local users only.
if joinEventNIDs, err = r.DB.GetMembershipEventNIDsForRoom(ctx, roomNID, true, true); err == nil { if joinEventNIDs, err = r.DB.GetMembershipEventNIDsForRoom(ctx, roomNID, true, true); err == nil {
// If we have no local users that are joined to the room then any state about
// the room that we have is quite possibly out of date. Therefore in that case
// we should overwrite it rather than merge it.
stateAtEvent.Overwrite = len(joinEventNIDs) == 0 stateAtEvent.Overwrite = len(joinEventNIDs) == 0
} }
@ -165,9 +169,9 @@ func (r *RoomserverInternalAPI) processInviteEvent(
}).Info("processing invite event") }).Info("processing invite event")
_, domain, _ := gomatrixserverlib.SplitID('@', targetUserID) _, domain, _ := gomatrixserverlib.SplitID('@', targetUserID)
targetLocal := domain == r.Cfg.Matrix.ServerName isTargetLocalUser := domain == r.Cfg.Matrix.ServerName
updater, err := r.DB.MembershipUpdater(ctx, roomID, targetUserID, targetLocal, input.RoomVersion) updater, err := r.DB.MembershipUpdater(ctx, roomID, targetUserID, isTargetLocalUser, input.RoomVersion)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View file

@ -132,12 +132,12 @@ func (r *RoomserverInternalAPI) updateMembership(
} }
func (r *RoomserverInternalAPI) isLocalTarget(event *gomatrixserverlib.Event) bool { func (r *RoomserverInternalAPI) isLocalTarget(event *gomatrixserverlib.Event) bool {
targetLocal := false isTargetLocalUser := false
if statekey := event.StateKey(); statekey != nil { if statekey := event.StateKey(); statekey != nil {
_, domain, _ := gomatrixserverlib.SplitID('@', *statekey) _, domain, _ := gomatrixserverlib.SplitID('@', *statekey)
targetLocal = domain == r.Cfg.Matrix.ServerName isTargetLocalUser = domain == r.Cfg.Matrix.ServerName
} }
return targetLocal return isTargetLocalUser
} }
func updateToInviteMembership( func updateToInviteMembership(

View file

@ -172,7 +172,7 @@ type RoomRecentEventsUpdater interface {
MarkEventAsSent(eventNID EventNID) error MarkEventAsSent(eventNID EventNID) error
// Build a membership updater for the target user in this room. // Build a membership updater for the target user in this room.
// It will share the same transaction as this updater. // It will share the same transaction as this updater.
MembershipUpdater(targetUserNID EventStateKeyNID, targetLocal bool) (MembershipUpdater, error) MembershipUpdater(targetUserNID EventStateKeyNID, isTargetLocalUser bool) (MembershipUpdater, error)
// Implements Transaction so it can be committed or rolledback // Implements Transaction so it can be committed or rolledback
common.Transaction common.Transaction
} }