matrix-spec/content/rooms/fragments/v9-redactions.md
Richard van der Hoff b07fe504ed
Stop rendering CS modules and room version fragments as standalone pages (#1317)
This is actually doing two things:

 * creating `{fragments,modules}/index.md` turns the fragments and modules into
   page resources, rather than pages in their own right. We have to update the
   shortcodes to match.

 * adding `headless: true` means that we don't render the pages.

The net effect is that we don't render pages like
https://spec.matrix.org/v1.4/rooms/fragments/v1-auth-rules/ and
https://spec.matrix.org/v1.4/client-server-api/modules/account_data/.
2022-11-08 17:27:44 +00:00

1.7 KiB

{{% added-in this=true %}} m.room.member events now keep join_authorised_via_users_server in addition to other keys in content when being redacted.

{{% boxes/rationale %}} Without the join_authorised_via_users_server property, redacted join events can become invalid when verifying the auth chain of a given event, thus creating a split-brain scenario where the user is able to speak from one server's perspective but most others will continually reject their events.

This can theoretically be worked around with a rejoin to the room, being careful not to use the faulty events as prev_events, though instead it is encouraged to use v9 rooms over v8 rooms to outright avoid the situation.

Issue #3373 has further information. {{% /boxes/rationale %}}

The full redaction algorithm follows.

Upon receipt of a redaction event, the server must strip off any keys not in the following list:

  • event_id
  • type
  • room_id
  • sender
  • state_key
  • content
  • hashes
  • signatures
  • depth
  • prev_events
  • prev_state
  • auth_events
  • origin
  • origin_server_ts
  • membership

The content object must also be stripped of all keys, unless it is one of one of the following event types:

  • m.room.member allows keys membership, join_authorised_via_users_server.
  • m.room.create allows key creator.
  • m.room.join_rules allows keys join_rule, allow.
  • m.room.power_levels allows keys ban, events, events_default, kick, redact, state_default, users, users_default.
  • m.room.history_visibility allows key history_visibility.