bug(collab): verwerk Matrix-sleutelstate vóór timeline-ops bij eerste sync #1041

Closed
opened 2026-08-01 08:26:02 +00:00 by brenno · 1 comment
Owner

Context
MatrixClient verzamelt bij een initiële sync timeline-events vóór room-state. MatrixRelayTransport verwerkt zo een versleutelde op voordat MatrixKeyExchange de afzender uit de device-state in de directory heeft gezet. De op wordt als unknown sender gedropt, terwijl de since-cursor al opschuift.

Impact
Een hostbewerking rond de eerste guest-sync kan definitief verdwijnen. De guest start dan op snapshotversie 0 terwijl de host al op versie 1 staat.

Relevante code

  • lib/collab/matrix_client.dart:516
  • lib/collab/matrix_relay_transport.dart:158
  • lib/collab/matrix_key_exchange.dart:146

Acceptatie

  • Device-state en benodigde to-device keyshares zijn beschikbaar voordat afhankelijke encrypted timeline-ops worden geopend, of zulke ops worden betrouwbaar gebufferd en opnieuw geprobeerd.
  • De since-cursor maakt een nog niet verwerkbare geldige op niet onherstelbaar.
  • Regressietest laat de host vóór de eerste handshake-sync wijzigen en bewijst dat de guest daarna versie 1 en de wijziging heeft.
Context MatrixClient verzamelt bij een initiële sync timeline-events vóór room-state. MatrixRelayTransport verwerkt zo een versleutelde op voordat MatrixKeyExchange de afzender uit de device-state in de directory heeft gezet. De op wordt als unknown sender gedropt, terwijl de since-cursor al opschuift. Impact Een hostbewerking rond de eerste guest-sync kan definitief verdwijnen. De guest start dan op snapshotversie 0 terwijl de host al op versie 1 staat. Relevante code - lib/collab/matrix_client.dart:516 - lib/collab/matrix_relay_transport.dart:158 - lib/collab/matrix_key_exchange.dart:146 Acceptatie - Device-state en benodigde to-device keyshares zijn beschikbaar voordat afhankelijke encrypted timeline-ops worden geopend, of zulke ops worden betrouwbaar gebufferd en opnieuw geprobeerd. - De since-cursor maakt een nog niet verwerkbare geldige op niet onherstelbaar. - Regressietest laat de host vóór de eerste handshake-sync wijzigen en bewijst dat de guest daarna versie 1 en de wijziging heeft.
Author
Owner

Opgelost op main (PR #1087, merge in d5d8ca1e). syncOnce verwerkt room-state en to-device-keyshares nu vóór de op/lock-events, en een nog niet te openen op gaat in een begrensde wachtrij die na elke sync opnieuw wordt geprobeerd (na een limiet fail-closed). Regressietest bewijst dat een op die vóór zijn afzender arriveert niet verloren gaat.

Opgelost op main (PR #1087, merge in d5d8ca1e). syncOnce verwerkt room-state en to-device-keyshares nu vóór de op/lock-events, en een nog niet te openen op gaat in een begrensde wachtrij die na elke sync opnieuw wordt geprobeerd (na een limiet fail-closed). Regressietest bewijst dat een op die vóór zijn afzender arriveert niet verloren gaat.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1041
No description provided.