mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-16 11:23:11 -06:00
Use PrepareAs
This commit is contained in:
parent
e2803ab4a6
commit
ba7f0c44a0
|
|
@ -94,16 +94,7 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(output.NewRoomEvent.Event, false, output.NewRoomEvent.RoomVersion)
|
||||
if err != nil {
|
||||
log.WithError(err).WithField("roomversion", output.NewRoomEvent.RoomVersion).Errorf(
|
||||
"roomserver output log: couldn't create event from trusted JSON (%d bytes)",
|
||||
len(output.NewRoomEvent.Event),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
ev := output.NewRoomEvent.Event
|
||||
log.WithFields(log.Fields{
|
||||
"event_id": ev.EventID(),
|
||||
"room_id": ev.RoomID(),
|
||||
|
|
|
|||
|
|
@ -84,16 +84,7 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(output.NewRoomEvent.Event, false, output.NewRoomEvent.RoomVersion)
|
||||
if err != nil {
|
||||
log.WithError(err).WithField("roomversion", output.NewRoomEvent.RoomVersion).Errorf(
|
||||
"roomserver output log: couldn't create event from trusted JSON (%d bytes)",
|
||||
len(output.NewRoomEvent.Event),
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
ev := output.NewRoomEvent.Event
|
||||
log.WithFields(log.Fields{
|
||||
"event_id": ev.EventID(),
|
||||
"room_id": ev.RoomID(),
|
||||
|
|
|
|||
|
|
@ -86,12 +86,7 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(output.NewRoomEvent.Event, false, output.NewRoomEvent.RoomVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ev := output.NewRoomEvent.Event
|
||||
log.WithFields(log.Fields{
|
||||
"event_id": ev.EventID(),
|
||||
"room_id": ev.RoomID(),
|
||||
|
|
@ -115,12 +110,7 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
// processMessage updates the list of currently joined hosts in the room
|
||||
// and then sends the event to the hosts that were joined before the event.
|
||||
func (s *OutputRoomEventConsumer) processMessage(ore api.OutputNewRoomEvent) error {
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(ore.Event, false, ore.RoomVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ev := ore.Event
|
||||
addsStateEvents, err := s.lookupStateEvents(ore.AddsStateEventIDs, ev)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
@ -183,15 +173,7 @@ func (s *OutputRoomEventConsumer) processMessage(ore api.OutputNewRoomEvent) err
|
|||
func (s *OutputRoomEventConsumer) joinedHostsAtEvent(
|
||||
ore api.OutputNewRoomEvent, oldJoinedHosts []types.JoinedHost,
|
||||
) ([]gomatrixserverlib.ServerName, error) {
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(ore.Event, false, ore.RoomVersion)
|
||||
if err != nil {
|
||||
log.WithError(err).WithField("roomversion", ore.RoomVersion).Errorf(
|
||||
"roomserver output log: couldn't create event from trusted JSON (%d bytes)",
|
||||
len(ore.Event),
|
||||
)
|
||||
return nil, err
|
||||
}
|
||||
ev := ore.Event
|
||||
|
||||
// Combine the delta into a single delta so that the adds and removes can
|
||||
// cancel each other out. This should reduce the number of times we need
|
||||
|
|
|
|||
2
go.mod
2
go.mod
|
|
@ -8,7 +8,7 @@ require (
|
|||
github.com/matrix-org/go-http-js-libp2p v0.0.0-20200304160008-4ec1129a00c4
|
||||
github.com/matrix-org/go-sqlite3-js v0.0.0-20200304164012-aa524245b658
|
||||
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200310154032-5ca7e25c30ed
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200311110021-ac84b78b81be
|
||||
github.com/matrix-org/naffka v0.0.0-20200127221512-0716baaabaf1
|
||||
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7
|
||||
github.com/mattn/go-sqlite3 v2.0.2+incompatible
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -94,6 +94,8 @@ github.com/matrix-org/gomatrixserverlib v0.0.0-20200310151755-d60e4e8147d2 h1:1k
|
|||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200310151755-d60e4e8147d2/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200310154032-5ca7e25c30ed h1:USEw1Rw391AzQBo/QgNyEY1nSAkwkuMoQ9LNTwGaKC0=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200310154032-5ca7e25c30ed/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200311110021-ac84b78b81be h1:4ZM5Ps50b7Ku75VzML6+3fCyuw0NSuDJi/kYjB+UScI=
|
||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200311110021-ac84b78b81be/go.mod h1:FsKa2pWE/bpQql9H7U4boOPXFoJX/QcqaZZ6ijLkaZI=
|
||||
github.com/matrix-org/naffka v0.0.0-20200127221512-0716baaabaf1 h1:osLoFdOy+ChQqVUn2PeTDETFftVkl4w9t/OW18g3lnk=
|
||||
github.com/matrix-org/naffka v0.0.0-20200127221512-0716baaabaf1/go.mod h1:cXoYQIENbdWIQHt1SyCo6Bl3C3raHwJ0wgVrXHSqf+A=
|
||||
github.com/matrix-org/util v0.0.0-20171127121716-2e2df66af2f5 h1:W7l5CP4V7wPyPb4tYE11dbmeAOwtFQBTW0rf4OonOS8=
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ import (
|
|||
"github.com/matrix-org/dendrite/common/config"
|
||||
"github.com/matrix-org/dendrite/publicroomsapi/storage"
|
||||
"github.com/matrix-org/dendrite/roomserver/api"
|
||||
"github.com/matrix-org/gomatrixserverlib"
|
||||
log "github.com/sirupsen/logrus"
|
||||
sarama "gopkg.in/Shopify/sarama.v1"
|
||||
)
|
||||
|
|
@ -78,16 +77,20 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(output.NewRoomEvent.Event, false, output.NewRoomEvent.RoomVersion)
|
||||
if err != nil {
|
||||
log.WithError(err).WithField("roomversion", output.NewRoomEvent.RoomVersion).Errorf(
|
||||
"roomserver output log: couldn't create event from trusted JSON (%d bytes)",
|
||||
len(output.NewRoomEvent.Event),
|
||||
)
|
||||
// Get the room version of the room
|
||||
vQueryReq := api.QueryRoomVersionForRoomIDRequest{RoomID: output.NewRoomEvent.Event.RoomID()}
|
||||
vQueryRes := api.QueryRoomVersionForRoomIDResponse{}
|
||||
if err := s.query.QueryRoomVersionForRoomID(context.Background(), &vQueryReq, &vQueryRes); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := output.NewRoomEvent.Event.PrepareAs(vQueryRes.RoomVersion); err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"room_version": vQueryRes.RoomVersion,
|
||||
}).WithError(err).Errorf("can't prepare event to version")
|
||||
}
|
||||
|
||||
ev := output.NewRoomEvent.Event
|
||||
log.WithFields(log.Fields{
|
||||
"event_id": ev.EventID(),
|
||||
"room_id": ev.RoomID(),
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ type OutputEvent struct {
|
|||
// prev_events.
|
||||
type OutputNewRoomEvent struct {
|
||||
// The event.
|
||||
Event []byte `json:"event"`
|
||||
Event gomatrixserverlib.Event `json:"event"`
|
||||
// The event version.
|
||||
RoomVersion gomatrixserverlib.RoomVersion `json:"room_version"`
|
||||
// The latest events in the room after this event.
|
||||
|
|
|
|||
|
|
@ -262,18 +262,13 @@ func (u *latestEventsUpdater) makeOutputNewRoomEvent() (*api.OutputEvent, error)
|
|||
latestEventIDs[i] = u.latest[i].EventID
|
||||
}
|
||||
|
||||
eventJSON, err := u.event.MarshalJSON()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
roomVersion, err := u.db.GetRoomVersionForRoom(context.Background(), u.roomNID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ore := api.OutputNewRoomEvent{
|
||||
Event: eventJSON,
|
||||
Event: u.event,
|
||||
RoomVersion: roomVersion,
|
||||
LastSentEventID: u.lastEventIDSent,
|
||||
LatestEventIDs: latestEventIDs,
|
||||
|
|
|
|||
|
|
@ -99,19 +99,16 @@ func (s *OutputRoomEventConsumer) onMessage(msg *sarama.ConsumerMessage) error {
|
|||
func (s *OutputRoomEventConsumer) onNewRoomEvent(
|
||||
ctx context.Context, msg api.OutputNewRoomEvent,
|
||||
) error {
|
||||
ev := msg.Event
|
||||
roomVersion := gomatrixserverlib.RoomVersionV1
|
||||
if rv := gjson.Get(string(msg.Event), "content.room_version"); rv.Exists() {
|
||||
if rv := gjson.Get(string(ev.Content()), "room_version"); rv.Exists() {
|
||||
roomVersion = gomatrixserverlib.RoomVersion(rv.String())
|
||||
}
|
||||
|
||||
// TODO: Is this trusted here?
|
||||
ev, err := gomatrixserverlib.NewEventFromTrustedJSON(msg.Event, false, roomVersion)
|
||||
if err != nil {
|
||||
log.WithError(err).WithField("roomversion", msg.RoomVersion).Errorf(
|
||||
"roomserver output log: couldn't create event from trusted JSON (%d bytes)",
|
||||
len(msg.Event),
|
||||
)
|
||||
return err
|
||||
if err := msg.Event.PrepareAs(roomVersion); err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"room_version": roomVersion,
|
||||
}).WithError(err).Errorf("can't prepare event to version")
|
||||
}
|
||||
|
||||
log.WithFields(log.Fields{
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ func (s *roomVersionStatements) prepare(db *sql.DB) (err error) {
|
|||
func (s *roomVersionStatements) selectRoomVersion(
|
||||
ctx context.Context, txn *sql.Tx, roomID string,
|
||||
) (roomVersion gomatrixserverlib.RoomVersion, err error) {
|
||||
stmt := common.TxStmt(txn, s.selectStateEventStmt)
|
||||
stmt := common.TxStmt(nil, s.selectStateEventStmt)
|
||||
var res []byte
|
||||
err = stmt.QueryRowContext(ctx, roomID, "m.room.create", "").Scan(&res)
|
||||
if err != nil {
|
||||
|
|
|
|||
Loading…
Reference in a new issue