aboutsummaryrefslogtreecommitdiff
path: root/roomserver/internal/input
diff options
context:
space:
mode:
Diffstat (limited to 'roomserver/internal/input')
-rw-r--r--roomserver/internal/input/input_events.go20
-rw-r--r--roomserver/internal/input/input_latest_events.go2
-rw-r--r--roomserver/internal/input/input_missing.go8
-rw-r--r--roomserver/internal/input/input_test.go3
4 files changed, 19 insertions, 14 deletions
diff --git a/roomserver/internal/input/input_events.go b/roomserver/internal/input/input_events.go
index 34566572..6fa7cfc2 100644
--- a/roomserver/internal/input/input_events.go
+++ b/roomserver/internal/input/input_events.go
@@ -102,7 +102,7 @@ func (r *Inputer) processRoomEvent(
// Parse and validate the event JSON
headered := input.Event
- event := headered.Unwrap()
+ event := headered.Event
logger := util.GetLogger(ctx).WithFields(logrus.Fields{
"event_id": event.EventID(),
"room_id": event.RoomID(),
@@ -235,7 +235,7 @@ func (r *Inputer) processRoomEvent(
haveEvents: map[string]*gomatrixserverlib.Event{},
}
var stateSnapshot *parsedRespState
- if stateSnapshot, err = missingState.processEventWithMissingState(ctx, event, headered.RoomVersion); err != nil {
+ if stateSnapshot, err = missingState.processEventWithMissingState(ctx, event, headered.Version()); err != nil {
// Something went wrong with retrieving the missing state, so we can't
// really do anything with the event other than reject it at this point.
isRejected = true
@@ -467,7 +467,7 @@ func (r *Inputer) processRoomEvent(
Type: api.OutputTypeRedactedEvent,
RedactedEvent: &api.OutputRedactedEvent{
RedactedEventID: redactedEventID,
- RedactedBecause: redactionEvent.Headered(headered.RoomVersion),
+ RedactedBecause: &types.HeaderedEvent{Event: redactionEvent},
},
},
})
@@ -509,7 +509,7 @@ func (r *Inputer) processStateBefore(
missingPrev bool,
) (historyVisibility gomatrixserverlib.HistoryVisibility, rejectionErr error, err error) {
historyVisibility = gomatrixserverlib.HistoryVisibilityShared // Default to shared.
- event := input.Event.Unwrap()
+ event := input.Event.Event
isCreateEvent := event.Type() == spec.MRoomCreate && event.StateKeyEquals("")
var stateBeforeEvent []*gomatrixserverlib.Event
switch {
@@ -567,7 +567,10 @@ func (r *Inputer) processStateBefore(
rejectionErr = fmt.Errorf("prev events of %q are not known", event.EventID())
return
default:
- stateBeforeEvent = gomatrixserverlib.UnwrapEventHeaders(stateBeforeRes.StateEvents)
+ stateBeforeEvent = make([]*gomatrixserverlib.Event, len(stateBeforeRes.StateEvents))
+ for i := range stateBeforeRes.StateEvents {
+ stateBeforeEvent[i] = stateBeforeRes.StateEvents[i].Event
+ }
}
}
// At this point, stateBeforeEvent should be populated either by
@@ -575,6 +578,7 @@ func (r *Inputer) processStateBefore(
// Check whether the event is allowed or not.
stateBeforeAuth := gomatrixserverlib.NewAuthEvents(stateBeforeEvent)
if rejectionErr = gomatrixserverlib.Allowed(event, &stateBeforeAuth); rejectionErr != nil {
+ rejectionErr = fmt.Errorf("Allowed() failed for stateBeforeEvent: %w", rejectionErr)
return
}
// Work out what the history visibility was at the time of the
@@ -604,7 +608,7 @@ func (r *Inputer) fetchAuthEvents(
logger *logrus.Entry,
roomInfo *types.RoomInfo,
virtualHost spec.ServerName,
- event *gomatrixserverlib.HeaderedEvent,
+ event *types.HeaderedEvent,
auth *gomatrixserverlib.AuthEvents,
known map[string]*types.Event,
servers []spec.ServerName,
@@ -654,7 +658,7 @@ func (r *Inputer) fetchAuthEvents(
// Request the entire auth chain for the event in question. This should
// contain all of the auth events — including ones that we already know —
// so we'll need to filter through those in the next section.
- res, err = r.FSAPI.GetEventAuth(ctx, virtualHost, serverName, event.RoomVersion, event.RoomID(), event.EventID())
+ res, err = r.FSAPI.GetEventAuth(ctx, virtualHost, serverName, event.Version(), event.RoomID(), event.EventID())
if err != nil {
logger.WithError(err).Warnf("Failed to get event auth from federation for %q: %s", event.EventID(), err)
continue
@@ -671,7 +675,7 @@ func (r *Inputer) fetchAuthEvents(
isRejected := false
nextAuthEvent:
for _, authEvent := range gomatrixserverlib.ReverseTopologicalOrdering(
- res.AuthEvents.UntrustedEvents(event.RoomVersion),
+ res.AuthEvents.UntrustedEvents(event.Version()),
gomatrixserverlib.TopologicalOrderByAuthEvents,
) {
// If we already know about this event from the database then we don't
diff --git a/roomserver/internal/input/input_latest_events.go b/roomserver/internal/input/input_latest_events.go
index 09db1843..e4783da8 100644
--- a/roomserver/internal/input/input_latest_events.go
+++ b/roomserver/internal/input/input_latest_events.go
@@ -393,7 +393,7 @@ func (u *latestEventsUpdater) makeOutputNewRoomEvent() (*api.OutputEvent, error)
}
ore := api.OutputNewRoomEvent{
- Event: u.event.Headered(u.roomInfo.RoomVersion),
+ Event: &types.HeaderedEvent{Event: u.event},
RewritesState: u.rewritesState,
LastSentEventID: u.lastEventIDSent,
LatestEventIDs: latestEventIDs,
diff --git a/roomserver/internal/input/input_missing.go b/roomserver/internal/input/input_missing.go
index 1aeb67c9..b56b2418 100644
--- a/roomserver/internal/input/input_missing.go
+++ b/roomserver/internal/input/input_missing.go
@@ -106,7 +106,7 @@ func (t *missingStateReq) processEventWithMissingState(
for _, newEvent := range newEvents {
err = t.inputer.processRoomEvent(ctx, t.virtualHost, &api.InputRoomEvent{
Kind: api.KindOld,
- Event: newEvent.Headered(roomVersion),
+ Event: &types.HeaderedEvent{Event: newEvent},
Origin: t.origin,
SendAsServer: api.DoNotSendToOtherServers,
})
@@ -155,7 +155,7 @@ func (t *missingStateReq) processEventWithMissingState(
}
outlierRoomEvents = append(outlierRoomEvents, api.InputRoomEvent{
Kind: api.KindOutlier,
- Event: outlier.Headered(roomVersion),
+ Event: &types.HeaderedEvent{Event: outlier},
Origin: t.origin,
})
}
@@ -185,7 +185,7 @@ func (t *missingStateReq) processEventWithMissingState(
err = t.inputer.processRoomEvent(ctx, t.virtualHost, &api.InputRoomEvent{
Kind: api.KindOld,
- Event: backwardsExtremity.Headered(roomVersion),
+ Event: &types.HeaderedEvent{Event: backwardsExtremity},
Origin: t.origin,
HasState: true,
StateEventIDs: stateIDs,
@@ -204,7 +204,7 @@ func (t *missingStateReq) processEventWithMissingState(
for _, newEvent := range newEvents {
err = t.inputer.processRoomEvent(ctx, t.virtualHost, &api.InputRoomEvent{
Kind: api.KindOld,
- Event: newEvent.Headered(roomVersion),
+ Event: &types.HeaderedEvent{Event: newEvent},
Origin: t.origin,
SendAsServer: api.DoNotSendToOtherServers,
})
diff --git a/roomserver/internal/input/input_test.go b/roomserver/internal/input/input_test.go
index 493848d9..20bf26c6 100644
--- a/roomserver/internal/input/input_test.go
+++ b/roomserver/internal/input/input_test.go
@@ -10,6 +10,7 @@ import (
"github.com/matrix-org/dendrite/roomserver"
"github.com/matrix-org/dendrite/roomserver/api"
"github.com/matrix-org/dendrite/roomserver/internal/input"
+ "github.com/matrix-org/dendrite/roomserver/types"
"github.com/matrix-org/dendrite/setup/jetstream"
"github.com/matrix-org/dendrite/test"
"github.com/matrix-org/dendrite/test/testrig"
@@ -44,7 +45,7 @@ func TestSingleTransactionOnInput(t *testing.T) {
}
in := api.InputRoomEvent{
Kind: api.KindOutlier, // don't panic if we generate an output event
- Event: event.Headered(gomatrixserverlib.RoomVersionV6),
+ Event: &types.HeaderedEvent{Event: event},
}
inputter := &input.Inputer{