diff --git a/roomserver/api/output.go b/roomserver/api/output.go index eae0d8627..d57f3b04c 100644 --- a/roomserver/api/output.go +++ b/roomserver/api/output.go @@ -91,9 +91,6 @@ const ( type OutputNewRoomEvent struct { // The Event. Event gomatrixserverlib.HeaderedEvent `json:"event"` - // Is the event a forward extremity in the room at the time of the output event - // being generated? - IsForwardExtremity bool `json:"is_forward_extremity"` // Does the event completely rewrite the room state? If so, then AddsStateEventIDs // will contain the entire room state. RewritesState bool `json:"rewrites_state"` diff --git a/roomserver/internal/input/input.go b/roomserver/internal/input/input.go index b5d20a05e..d340ac218 100644 --- a/roomserver/internal/input/input.go +++ b/roomserver/internal/input/input.go @@ -85,7 +85,6 @@ func (r *Inputer) WriteOutputEvents(roomID string, updates []api.OutputEvent) er logger = logger.WithFields(log.Fields{ "event_type": updates[i].NewRoomEvent.Event.Type(), "event_id": updates[i].NewRoomEvent.Event.EventID(), - "is_fwd_extrem": updates[i].NewRoomEvent.IsForwardExtremity, "adds_state": len(updates[i].NewRoomEvent.AddsStateEventIDs), "removes_state": len(updates[i].NewRoomEvent.RemovesStateEventIDs), "send_as_server": updates[i].NewRoomEvent.SendAsServer, diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go index 1fcdc0c11..1034f62b5 100644 --- a/roomserver/internal/input/input_events.go +++ b/roomserver/internal/input/input_events.go @@ -119,7 +119,7 @@ func (r *Inputer) processRoomEvent( // We haven't calculated a state for this event yet. // Lets calculate one. err = r.calculateAndSetState(ctx, input, *roomInfo, &stateAtEvent, event, isRejected) - if err != nil { + if err != nil && input.Kind != api.KindOld { return "", fmt.Errorf("r.calculateAndSetState: %w", err) } } diff --git a/roomserver/internal/input/input_latest_events.go b/roomserver/internal/input/input_latest_events.go index 81e5eb663..5adcd0877 100644 --- a/roomserver/internal/input/input_latest_events.go +++ b/roomserver/internal/input/input_latest_events.go @@ -103,8 +103,6 @@ type latestEventsUpdater struct { lastEventIDSent string // The latest events in the room after processing this event. latest []types.StateAtEventAndReference - // Is the event now a current forward extremity? - isForwardExtremity bool // The state entries removed from and added to the current state of the // room as a result of processing this event. They are sorted lists. removed []types.StateEntry @@ -290,7 +288,6 @@ func (u *latestEventsUpdater) calculateLatest( // We've already referenced this new event so we can just return // the newly completed extremities at this point. u.latest = newLatest - u.isForwardExtremity = true return nil } } @@ -305,7 +302,6 @@ func (u *latestEventsUpdater) calculateLatest( return fmt.Errorf("u.updater.IsReferenced (new): %w", err) } else if !referenced || len(newLatest) == 0 { newLatest = append(newLatest, newEvent) - u.isForwardExtremity = true } u.latest = newLatest @@ -320,31 +316,28 @@ func (u *latestEventsUpdater) makeOutputNewRoomEvent() (*api.OutputEvent, error) } ore := api.OutputNewRoomEvent{ - Event: u.event.Headered(u.roomInfo.RoomVersion), - IsForwardExtremity: u.isForwardExtremity, - RewritesState: u.rewritesState, - LastSentEventID: u.lastEventIDSent, - LatestEventIDs: latestEventIDs, - TransactionID: u.transactionID, + Event: u.event.Headered(u.roomInfo.RoomVersion), + RewritesState: u.rewritesState, + LastSentEventID: u.lastEventIDSent, + LatestEventIDs: latestEventIDs, + TransactionID: u.transactionID, } - if u.isForwardExtremity { - eventIDMap, err := u.stateEventMap() - if err != nil { - return nil, err - } - for _, entry := range u.added { - ore.AddsStateEventIDs = append(ore.AddsStateEventIDs, eventIDMap[entry.EventNID]) - } - for _, entry := range u.removed { - ore.RemovesStateEventIDs = append(ore.RemovesStateEventIDs, eventIDMap[entry.EventNID]) - } - for _, entry := range u.stateBeforeEventRemoves { - ore.StateBeforeRemovesEventIDs = append(ore.StateBeforeRemovesEventIDs, eventIDMap[entry.EventNID]) - } - for _, entry := range u.stateBeforeEventAdds { - ore.StateBeforeAddsEventIDs = append(ore.StateBeforeAddsEventIDs, eventIDMap[entry.EventNID]) - } + eventIDMap, err := u.stateEventMap() + if err != nil { + return nil, err + } + for _, entry := range u.added { + ore.AddsStateEventIDs = append(ore.AddsStateEventIDs, eventIDMap[entry.EventNID]) + } + for _, entry := range u.removed { + ore.RemovesStateEventIDs = append(ore.RemovesStateEventIDs, eventIDMap[entry.EventNID]) + } + for _, entry := range u.stateBeforeEventRemoves { + ore.StateBeforeRemovesEventIDs = append(ore.StateBeforeRemovesEventIDs, eventIDMap[entry.EventNID]) + } + for _, entry := range u.stateBeforeEventAdds { + ore.StateBeforeAddsEventIDs = append(ore.StateBeforeAddsEventIDs, eventIDMap[entry.EventNID]) } ore.SendAsServer = u.sendAsServer