diff --git a/roomserver/internal/perform/perform_invite.go b/roomserver/internal/perform/perform_invite.go index b5ace4f00..b29cb3cde 100644 --- a/roomserver/internal/perform/perform_invite.go +++ b/roomserver/internal/perform/perform_invite.go @@ -16,8 +16,8 @@ package perform import ( "context" + "errors" "fmt" - "strings" federationSenderAPI "github.com/matrix-org/dendrite/federationsender/api" "github.com/matrix-org/dendrite/internal/config" @@ -160,8 +160,10 @@ func (r *Inviter) PerformInvite( Code: api.PerformErrorNotAllowed, } - if strings.Contains(err.Error(), "value is outside of safe range") { - log.Debug("setting error to PerformErrCanonicalJSON") + // Ensure we send the correct http code if the json is invalid for + // room version 6. + if req.RoomVersion == gomatrixserverlib.RoomVersionV6 && + errors.Is(err, gomatrixserverlib.ErrCanonicalJSON) { res.Error.Code = api.PerformErrCanonicalJSON } diff --git a/sytest-whitelist b/sytest-whitelist index 17bf2581d..354890c63 100644 --- a/sytest-whitelist +++ b/sytest-whitelist @@ -496,3 +496,4 @@ Forgetting room does not show up in v2 /sync Can forget room you've been kicked from Can re-join room if re-invited /whois +Outbound federation rejects invite response which include invalid JSON for room version 6 \ No newline at end of file