Merge branch 'neilalexander/federationinput2' into neilalexander/federationinput

This commit is contained in:
Neil Alexander 2022-01-27 13:35:49 +00:00
commit a3c3a4adcc
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944
12 changed files with 14 additions and 29 deletions

View file

@ -459,7 +459,6 @@ func createRoom(
Kind: roomserverAPI.KindNew,
Event: event,
Origin: cfg.Matrix.ServerName,
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: roomserverAPI.DoNotSendToOtherServers,
})
}

View file

@ -324,7 +324,6 @@ func SendJoin(
{
Kind: api.KindNew,
Event: event.Headered(stateAndAuthChainResponse.RoomVersion),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(cfg.Matrix.ServerName),
TransactionID: nil,
},

View file

@ -275,7 +275,6 @@ func SendLeave(
{
Kind: api.KindNew,
Event: event.Headered(verRes.RoomVersion),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(cfg.Matrix.ServerName),
TransactionID: nil,
},

View file

@ -56,12 +56,6 @@ type InputRoomEvent struct {
Event *gomatrixserverlib.HeaderedEvent `json:"event"`
// Which server told us about this event.
Origin gomatrixserverlib.ServerName `json:"origin"`
// List of state event IDs that authenticate this event.
// These are likely derived from the "auth_events" JSON key of the event.
// But can be different because the "auth_events" key can be incomplete or wrong.
// For example many matrix events forget to reference the m.room.create event even though it is needed for auth.
// (since synapse allows this to happen we have to allow it as well.)
AuthEventIDs []string `json:"auth_event_ids"`
// Whether the state is supplied as a list of event IDs or whether it
// should be derived from the state at the previous events.
HasState bool `json:"has_state"`

View file

@ -36,7 +36,6 @@ func SendEvents(
Kind: kind,
Event: event,
Origin: origin,
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(sendAsServer),
TransactionID: txnID,
}
@ -63,10 +62,9 @@ func SendEventWithState(
continue
}
ires = append(ires, InputRoomEvent{
Kind: KindOutlier,
Event: outlier.Headered(event.RoomVersion),
Origin: origin,
AuthEventIDs: outlier.AuthEventIDs(),
Kind: KindOutlier,
Event: outlier.Headered(event.RoomVersion),
Origin: origin,
})
}
@ -79,7 +77,6 @@ func SendEventWithState(
Kind: kind,
Event: event,
Origin: origin,
AuthEventIDs: event.AuthEventIDs(),
HasState: true,
StateEventIDs: stateEventIDs,
})

View file

@ -177,10 +177,9 @@ func (t *missingStateReq) processEventWithMissingState(
continue
}
outlierRoomEvents = append(outlierRoomEvents, api.InputRoomEvent{
Kind: api.KindOutlier,
Event: outlier.Headered(roomVersion),
Origin: t.origin,
AuthEventIDs: outlier.AuthEventIDs(),
Kind: api.KindOutlier,
Event: outlier.Headered(roomVersion),
Origin: t.origin,
})
}
// TODO: we could do this concurrently?
@ -202,7 +201,6 @@ func (t *missingStateReq) processEventWithMissingState(
Kind: api.KindOld,
Event: backwardsExtremity.Headered(roomVersion),
Origin: t.origin,
AuthEventIDs: backwardsExtremity.AuthEventIDs(),
HasState: true,
StateEventIDs: stateIDs,
SendAsServer: api.DoNotSendToOtherServers,
@ -220,7 +218,6 @@ func (t *missingStateReq) processEventWithMissingState(
Kind: api.KindOld,
Event: newEvent.Headered(roomVersion),
Origin: t.origin,
AuthEventIDs: newEvent.AuthEventIDs(),
SendAsServer: api.DoNotSendToOtherServers,
})
if err != nil {

View file

@ -173,7 +173,6 @@ func (r *Inviter) PerformInvite(
Kind: api.KindNew,
Event: event,
Origin: event.Origin(),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: req.SendAsServer,
},
},

View file

@ -271,7 +271,6 @@ func (r *Joiner) performJoinRoomByID(
{
Kind: rsAPI.KindNew,
Event: event.Headered(buildRes.RoomVersion),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(r.Cfg.Matrix.ServerName),
},
},

View file

@ -140,7 +140,6 @@ func (r *Leaver) performLeaveRoomByID(
Kind: api.KindNew,
Event: event.Headered(buildRes.RoomVersion),
Origin: event.Origin(),
AuthEventIDs: event.AuthEventIDs(),
SendAsServer: string(r.Cfg.Matrix.ServerName),
},
},

View file

@ -311,7 +311,9 @@ func (s *eventStatements) BulkSelectStateAtEventByID(
); err != nil {
return nil, err
}
if result.BeforeStateSnapshotNID == 0 && result.EventTypeNID != types.MRoomCreateNID {
// Genuine create events are the only case where it's OK to have no previous state.
isCreate := result.EventTypeNID == types.MRoomCreateNID && result.EventStateKeyNID == 1
if result.BeforeStateSnapshotNID == 0 && !isCreate {
return nil, types.MissingEventError(
fmt.Sprintf("storage: missing state for event NID %d", result.EventNID),
)

View file

@ -322,7 +322,9 @@ func (s *eventStatements) BulkSelectStateAtEventByID(
); err != nil {
return nil, err
}
if result.BeforeStateSnapshotNID == 0 && result.EventTypeNID != types.MRoomCreateNID {
// Genuine create events are the only case where it's OK to have no previous state.
isCreate := result.EventTypeNID == types.MRoomCreateNID && result.EventStateKeyNID == 1
if result.BeforeStateSnapshotNID == 0 && !isCreate {
return nil, types.MissingEventError(
fmt.Sprintf("storage: missing state for event NID %d", result.EventNID),
)

View file

@ -643,9 +643,8 @@ func (rc *reqCtx) injectResponseToRoomserver(res *gomatrixserverlib.MSC2836Event
var ires []roomserver.InputRoomEvent
for _, outlier := range append(eventsInOrder, messageEvents...) {
ires = append(ires, roomserver.InputRoomEvent{
Kind: roomserver.KindOutlier,
Event: outlier.Headered(outlier.Version()),
AuthEventIDs: outlier.AuthEventIDs(),
Kind: roomserver.KindOutlier,
Event: outlier.Headered(outlier.Version()),
})
}
// we've got the data by this point so use a background context