aboutsummaryrefslogtreecommitdiff
path: root/syncapi/routing
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2020-03-27 16:28:22 +0000
committerGitHub <noreply@github.com>2020-03-27 16:28:22 +0000
commit05e1ae8745725245ee3b85a588000b0d26bae96c (patch)
treea54f2dfbc751fca5cf9b02327825bc7e9c340b3c /syncapi/routing
parent314da91f1dff5e4c3921b06180110e7a15b38f22 (diff)
Further room version wiring (#936)
* Room version 2 by default, other wiring updates, update gomatrixserverlib * Fix nil pointer exception * Fix some more nil pointer exceptions hopefully * Update gomatrixserverlib * Send all room versions when joining, not just stable ones * Remove room version cquery * Get room version when getting events from the roomserver database * Reset default back to room version 2 * Don't generate event IDs unless needed * Revert "Remove room version cquery" This reverts commit a170d5873360dd059614460acc8b21ab2cda9767. * Query room version in federation API, client API as needed * Improvements to make_join send_join dance * Make room server producers use headered events * Lint tweaks * Update gomatrixserverlib * Versioned SendJoin * Query room version in syncapi backfill * Handle transaction marshalling/unmarshalling within Dendrite * Sorta fix federation (kinda) * whoops commit federation API too * Use NewEventFromTrustedJSON when getting events from the database * Update gomatrixserverlib * Strip headers on federationapi endpoints * Fix bug in clientapi profile room version query * Update gomatrixserverlib * Return more useful error if room version query doesn't find the room * Update gomatrixserverlib * Update gomatrixserverlib * Maybe fix federation * Fix formatting directive * Update sytest whitelist and blacklist * Temporarily disable room versions 3 and 4 until gmsl is fixed * Fix count of EDUs in logging * Update gomatrixserverlib * Update gomatrixserverlib * Update gomatrixserverlib * Rely on EventBuilder in gmsl to generate the event IDs for us * Some review comments fixed * Move function out of common and into gmsl * Comment in federationsender destinationqueue * Update gomatrixserverlib
Diffstat (limited to 'syncapi/routing')
-rw-r--r--syncapi/routing/messages.go23
1 files changed, 16 insertions, 7 deletions
diff --git a/syncapi/routing/messages.go b/syncapi/routing/messages.go
index 5f2e4f17..c9d62477 100644
--- a/syncapi/routing/messages.go
+++ b/syncapi/routing/messages.go
@@ -362,12 +362,18 @@ func (r *messagesReq) handleNonEmptyEventsSlice(streamEvents []types.StreamEvent
// Returns an error if there was an issue with retrieving the list of servers in
// the room or sending the request.
func (r *messagesReq) backfill(fromEventIDs []string, limit int) ([]gomatrixserverlib.HeaderedEvent, error) {
+ verReq := api.QueryRoomVersionForRoomRequest{RoomID: r.roomID}
+ verRes := api.QueryRoomVersionForRoomResponse{}
+ if err := r.queryAPI.QueryRoomVersionForRoom(r.ctx, &verReq, &verRes); err != nil {
+ return nil, err
+ }
+
srvToBackfillFrom, err := r.serverToBackfillFrom(fromEventIDs)
if err != nil {
return nil, fmt.Errorf("Cannot find server to backfill from: %w", err)
}
- pdus := make([]gomatrixserverlib.HeaderedEvent, 0)
+ headered := make([]gomatrixserverlib.HeaderedEvent, 0)
// If the roomserver responded with at least one server that isn't us,
// send it a request for backfill.
@@ -380,17 +386,20 @@ func (r *messagesReq) backfill(fromEventIDs []string, limit int) ([]gomatrixserv
}
for _, p := range txn.PDUs {
- pdus = append(pdus, p.Headered(gomatrixserverlib.RoomVersionV1))
+ event, e := gomatrixserverlib.NewEventFromUntrustedJSON(p, verRes.RoomVersion)
+ if e != nil {
+ continue
+ }
+ headered = append(headered, event.Headered(verRes.RoomVersion))
}
- util.GetLogger(r.ctx).WithField("server", srvToBackfillFrom).WithField("new_events", len(pdus)).Info("Storing new events from backfill")
+ util.GetLogger(r.ctx).WithField("server", srvToBackfillFrom).WithField("new_events", len(headered)).Info("Storing new events from backfill")
// Store the events in the database, while marking them as unfit to show
// up in responses to sync requests.
- for _, pdu := range pdus {
- headered := pdu.Headered(gomatrixserverlib.RoomVersionV1)
+ for i := range headered {
if _, err = r.db.WriteEvent(
r.ctx,
- &headered,
+ &headered[i],
[]gomatrixserverlib.HeaderedEvent{},
[]string{},
[]string{},
@@ -400,7 +409,7 @@ func (r *messagesReq) backfill(fromEventIDs []string, limit int) ([]gomatrixserv
}
}
- return pdus, nil
+ return headered, nil
}
func (r *messagesReq) serverToBackfillFrom(fromEventIDs []string) (gomatrixserverlib.ServerName, error) {