From 7f7a49f9993af9f3ca1b04ccd86812c64f67ee16 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Wed, 20 May 2020 17:45:13 +0100 Subject: [PATCH] Review comments --- roomserver/internal/input_events.go | 8 ++++++-- roomserver/internal/input_membership.go | 6 +++--- roomserver/types/types.go | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/roomserver/internal/input_events.go b/roomserver/internal/input_events.go index 864ecf3fa..a4167714d 100644 --- a/roomserver/internal/input_events.go +++ b/roomserver/internal/input_events.go @@ -120,7 +120,11 @@ func (r *RoomserverInternalAPI) calculateAndSetState( // Check here if we think we're in the room already. stateAtEvent.Overwrite = true 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 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 } @@ -165,9 +169,9 @@ func (r *RoomserverInternalAPI) processInviteEvent( }).Info("processing invite event") _, 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 { return nil, err } diff --git a/roomserver/internal/input_membership.go b/roomserver/internal/input_membership.go index 6fe866788..af0c7f8b3 100644 --- a/roomserver/internal/input_membership.go +++ b/roomserver/internal/input_membership.go @@ -132,12 +132,12 @@ func (r *RoomserverInternalAPI) updateMembership( } func (r *RoomserverInternalAPI) isLocalTarget(event *gomatrixserverlib.Event) bool { - targetLocal := false + isTargetLocalUser := false if statekey := event.StateKey(); statekey != nil { _, domain, _ := gomatrixserverlib.SplitID('@', *statekey) - targetLocal = domain == r.Cfg.Matrix.ServerName + isTargetLocalUser = domain == r.Cfg.Matrix.ServerName } - return targetLocal + return isTargetLocalUser } func updateToInviteMembership( diff --git a/roomserver/types/types.go b/roomserver/types/types.go index 477664f87..74e6b0784 100644 --- a/roomserver/types/types.go +++ b/roomserver/types/types.go @@ -172,7 +172,7 @@ type RoomRecentEventsUpdater interface { MarkEventAsSent(eventNID EventNID) error // Build a membership updater for the target user in this room. // 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 common.Transaction }