aboutsummaryrefslogtreecommitdiff
path: root/federationapi/routing/invite.go
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 /federationapi/routing/invite.go
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 'federationapi/routing/invite.go')
-rw-r--r--federationapi/routing/invite.go19
1 files changed, 15 insertions, 4 deletions
diff --git a/federationapi/routing/invite.go b/federationapi/routing/invite.go
index 94610346..09c3734b 100644
--- a/federationapi/routing/invite.go
+++ b/federationapi/routing/invite.go
@@ -15,12 +15,13 @@
package routing
import (
- "encoding/json"
+ "context"
"net/http"
"github.com/matrix-org/dendrite/clientapi/jsonerror"
"github.com/matrix-org/dendrite/clientapi/producers"
"github.com/matrix-org/dendrite/common/config"
+ "github.com/matrix-org/dendrite/roomserver/api"
"github.com/matrix-org/gomatrixserverlib"
"github.com/matrix-org/util"
)
@@ -35,10 +36,19 @@ func Invite(
producer *producers.RoomserverProducer,
keys gomatrixserverlib.KeyRing,
) util.JSONResponse {
+ // Look up the room version for the room.
+ verReq := api.QueryRoomVersionForRoomRequest{RoomID: roomID}
+ verRes := api.QueryRoomVersionForRoomResponse{}
+ if err := producer.QueryAPI.QueryRoomVersionForRoom(context.Background(), &verReq, &verRes); err != nil {
+ return util.JSONResponse{
+ Code: http.StatusBadRequest,
+ JSON: jsonerror.UnsupportedRoomVersion(err.Error()),
+ }
+ }
// Decode the event JSON from the request.
- var event gomatrixserverlib.Event
- if err := json.Unmarshal(request.Content(), &event); err != nil {
+ event, err := gomatrixserverlib.NewEventFromUntrustedJSON(request.Content(), verRes.RoomVersion)
+ if err != nil {
return util.JSONResponse{
Code: http.StatusBadRequest,
JSON: jsonerror.NotJSON("The request body could not be decoded into valid JSON. " + err.Error()),
@@ -70,9 +80,10 @@ func Invite(
}
// Check that the event is signed by the server sending the request.
+ redacted := event.Redact()
verifyRequests := []gomatrixserverlib.VerifyJSONRequest{{
ServerName: event.Origin(),
- Message: event.Redact().JSON(),
+ Message: redacted.JSON(),
AtTS: event.OriginServerTS(),
}}
verifyResults, err := keys.VerifyJSONs(httpReq.Context(), verifyRequests)