mirror of
https://github.com/hoernschen/dendrite.git
synced 2025-07-31 13:22:46 +00:00
Update gmsl to use new validated RoomID on PDUs (#3200)
GMSL returns a `spec.RoomID` when calling `PDU.RoomID()`
This commit is contained in:
parent
058081e68e
commit
8245b24100
64 changed files with 241 additions and 413 deletions
|
@ -340,7 +340,7 @@ func (s *currentRoomStateStatements) UpsertRoomState(
|
|||
stmt := sqlutil.TxStmt(txn, s.upsertRoomStateStmt)
|
||||
_, err = stmt.ExecContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
event.RoomID().String(),
|
||||
event.EventID(),
|
||||
event.Type(),
|
||||
event.UserID.String(),
|
||||
|
|
|
@ -99,7 +99,7 @@ func (s *inviteEventsStatements) InsertInviteEvent(
|
|||
|
||||
err = sqlutil.TxStmt(txn, s.insertInviteEventStmt).QueryRowContext(
|
||||
ctx,
|
||||
inviteEvent.RoomID(),
|
||||
inviteEvent.RoomID().String(),
|
||||
inviteEvent.EventID(),
|
||||
inviteEvent.UserID.String(),
|
||||
headeredJSON,
|
||||
|
|
|
@ -108,7 +108,7 @@ func (s *membershipsStatements) UpsertMembership(
|
|||
}
|
||||
_, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
event.RoomID().String(),
|
||||
event.StateKeyResolved,
|
||||
membership,
|
||||
event.EventID(),
|
||||
|
|
|
@ -334,7 +334,7 @@ func (s *outputRoomEventsStatements) SelectStateInRange(
|
|||
if err := json.Unmarshal(eventBytes, &ev); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
needSet := stateNeeded[ev.RoomID()]
|
||||
needSet := stateNeeded[ev.RoomID().String()]
|
||||
if needSet == nil { // make set if required
|
||||
needSet = make(map[string]bool)
|
||||
}
|
||||
|
@ -344,7 +344,7 @@ func (s *outputRoomEventsStatements) SelectStateInRange(
|
|||
for _, id := range addIDs {
|
||||
needSet[id] = true
|
||||
}
|
||||
stateNeeded[ev.RoomID()] = needSet
|
||||
stateNeeded[ev.RoomID().String()] = needSet
|
||||
ev.Visibility = historyVisibility
|
||||
|
||||
eventIDToEvent[eventID] = types.StreamEvent{
|
||||
|
@ -403,7 +403,7 @@ func (s *outputRoomEventsStatements) InsertEvent(
|
|||
stmt := sqlutil.TxStmt(txn, s.insertEventStmt)
|
||||
err = stmt.QueryRowContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
event.RoomID().String(),
|
||||
event.EventID(),
|
||||
headeredJSON,
|
||||
event.Type(),
|
||||
|
|
|
@ -107,7 +107,7 @@ func (s *outputRoomEventsTopologyStatements) InsertEventInTopology(
|
|||
ctx context.Context, txn *sql.Tx, event *rstypes.HeaderedEvent, pos types.StreamPosition,
|
||||
) (topoPos types.StreamPosition, err error) {
|
||||
err = sqlutil.TxStmt(txn, s.insertEventInTopologyStmt).QueryRowContext(
|
||||
ctx, event.EventID(), event.Depth(), event.RoomID(), pos,
|
||||
ctx, event.EventID(), event.Depth(), event.RoomID().String(), pos,
|
||||
).Scan(&topoPos)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -114,14 +114,7 @@ func (d *Database) StreamEventsToEvents(ctx context.Context, device *userapi.Dev
|
|||
}).WithError(err).Warnf("Failed to add transaction ID to event")
|
||||
continue
|
||||
}
|
||||
roomID, err := spec.NewRoomID(in[i].RoomID())
|
||||
if err != nil {
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"event_id": out[i].EventID(),
|
||||
}).WithError(err).Warnf("Room ID is invalid")
|
||||
continue
|
||||
}
|
||||
deviceSenderID, err := rsAPI.QuerySenderIDForUser(ctx, *roomID, *userID)
|
||||
deviceSenderID, err := rsAPI.QuerySenderIDForUser(ctx, in[i].RoomID(), *userID)
|
||||
if err != nil || deviceSenderID == nil {
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"event_id": out[i].EventID(),
|
||||
|
@ -236,7 +229,7 @@ func (d *Database) UpsertAccountData(
|
|||
// to account for the fact that the given event is no longer a backwards extremity, but may be marked as such.
|
||||
// This function should always be called within a sqlutil.Writer for safety in SQLite.
|
||||
func (d *Database) handleBackwardExtremities(ctx context.Context, txn *sql.Tx, ev *rstypes.HeaderedEvent) error {
|
||||
if err := d.BackwardExtremities.DeleteBackwardExtremity(ctx, txn, ev.RoomID(), ev.EventID()); err != nil {
|
||||
if err := d.BackwardExtremities.DeleteBackwardExtremity(ctx, txn, ev.RoomID().String(), ev.EventID()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -257,7 +250,7 @@ func (d *Database) handleBackwardExtremities(ctx context.Context, txn *sql.Tx, e
|
|||
|
||||
// If the event is missing, consider it a backward extremity.
|
||||
if !found {
|
||||
if err = d.BackwardExtremities.InsertsBackwardExtremity(ctx, txn, ev.RoomID(), ev.EventID(), eID); err != nil {
|
||||
if err = d.BackwardExtremities.InsertsBackwardExtremity(ctx, txn, ev.RoomID().String(), ev.EventID(), eID); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -426,7 +419,7 @@ func (d *Database) fetchStateEvents(
|
|||
}
|
||||
// we know we got them all otherwise an error would've been returned, so just loop the events
|
||||
for _, ev := range evs {
|
||||
roomID := ev.RoomID()
|
||||
roomID := ev.RoomID().String()
|
||||
stateBetween[roomID] = append(stateBetween[roomID], ev)
|
||||
}
|
||||
}
|
||||
|
@ -522,11 +515,7 @@ func getMembershipFromEvent(ctx context.Context, ev gomatrixserverlib.PDU, userI
|
|||
if err != nil {
|
||||
return "", ""
|
||||
}
|
||||
roomID, err := spec.NewRoomID(ev.RoomID())
|
||||
if err != nil {
|
||||
return "", ""
|
||||
}
|
||||
senderID, err := rsAPI.QuerySenderIDForUser(ctx, *roomID, *fullUser)
|
||||
senderID, err := rsAPI.QuerySenderIDForUser(ctx, ev.RoomID(), *fullUser)
|
||||
if err != nil || senderID == nil {
|
||||
return "", ""
|
||||
}
|
||||
|
@ -626,7 +615,7 @@ func (d *Database) UpdateRelations(ctx context.Context, event *rstypes.HeaderedE
|
|||
default:
|
||||
return d.Writer.Do(d.DB, nil, func(txn *sql.Tx) error {
|
||||
return d.Relations.InsertRelation(
|
||||
ctx, txn, event.RoomID(), content.Relations.EventID,
|
||||
ctx, txn, event.RoomID().String(), content.Relations.EventID,
|
||||
event.EventID(), event.Type(), content.Relations.RelationType,
|
||||
)
|
||||
})
|
||||
|
|
|
@ -339,7 +339,7 @@ func (s *currentRoomStateStatements) UpsertRoomState(
|
|||
stmt := sqlutil.TxStmt(txn, s.upsertRoomStateStmt)
|
||||
_, err = stmt.ExecContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
event.RoomID().String(),
|
||||
event.EventID(),
|
||||
event.Type(),
|
||||
event.UserID.String(),
|
||||
|
|
|
@ -106,7 +106,7 @@ func (s *inviteEventsStatements) InsertInviteEvent(
|
|||
_, err = stmt.ExecContext(
|
||||
ctx,
|
||||
streamPos,
|
||||
inviteEvent.RoomID(),
|
||||
inviteEvent.RoomID().String(),
|
||||
inviteEvent.EventID(),
|
||||
inviteEvent.UserID.String(),
|
||||
headeredJSON,
|
||||
|
|
|
@ -111,7 +111,7 @@ func (s *membershipsStatements) UpsertMembership(
|
|||
}
|
||||
_, err = sqlutil.TxStmt(txn, s.upsertMembershipStmt).ExecContext(
|
||||
ctx,
|
||||
event.RoomID(),
|
||||
event.RoomID().String(),
|
||||
event.StateKeyResolved,
|
||||
membership,
|
||||
event.EventID(),
|
||||
|
|
|
@ -254,7 +254,7 @@ func (s *outputRoomEventsStatements) SelectStateInRange(
|
|||
if err := json.Unmarshal(eventBytes, &ev); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
needSet := stateNeeded[ev.RoomID()]
|
||||
needSet := stateNeeded[ev.RoomID().String()]
|
||||
if needSet == nil { // make set if required
|
||||
needSet = make(map[string]bool)
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ func (s *outputRoomEventsStatements) SelectStateInRange(
|
|||
for _, id := range addIDs {
|
||||
needSet[id] = true
|
||||
}
|
||||
stateNeeded[ev.RoomID()] = needSet
|
||||
stateNeeded[ev.RoomID().String()] = needSet
|
||||
ev.Visibility = historyVisibility
|
||||
|
||||
eventIDToEvent[eventID] = types.StreamEvent{
|
||||
|
@ -344,7 +344,7 @@ func (s *outputRoomEventsStatements) InsertEvent(
|
|||
_, err = insertStmt.ExecContext(
|
||||
ctx,
|
||||
streamPos,
|
||||
event.RoomID(),
|
||||
event.RoomID().String(),
|
||||
event.EventID(),
|
||||
headeredJSON,
|
||||
event.Type(),
|
||||
|
|
|
@ -106,7 +106,7 @@ func (s *outputRoomEventsTopologyStatements) InsertEventInTopology(
|
|||
ctx context.Context, txn *sql.Tx, event *rstypes.HeaderedEvent, pos types.StreamPosition,
|
||||
) (types.StreamPosition, error) {
|
||||
_, err := sqlutil.TxStmt(txn, s.insertEventInTopologyStmt).ExecContext(
|
||||
ctx, event.EventID(), event.Depth(), event.RoomID(), pos,
|
||||
ctx, event.EventID(), event.Depth(), event.RoomID().String(), pos,
|
||||
)
|
||||
return types.StreamPosition(event.Depth()), err
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue