mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-16 03:55:42 -04:00
* crypto: implement more primitives for the MemoryStore to work in tests * crypto: change the shape of the `CryptoStoreLock` API In particular: - make the lock work across multiple threads of the same process trying to acquire it, using `num_holders`. - add a mechanism to get the lock only once (for the NSE process, in case the main app had acquired the lock before). * client: add a cross-process crypto store lock, enable it with `Encryption::enable_cross_process_store_lock` * client: make `preshare_room_key` a critical section of the cross-process lock * sliding sync: make it possible to define different timeouts for a `SlidingSyncInstance` This will be handy for the NSE process on iOS, which has very little time to wait for the proxy's responses. * feat: implement the `EncryptionSync` API (renamed from `Notification` API) * fixup! client: add a cross-process crypto store lock, enable it with `Encryption::enable_cross_process_store_lock` * feat: allow disabling e2ee / to-device in the RoomList API * feat: use same SS id for main/NSE process, reload to-device token from disk before each encryption sync * fix: better error handling if restoring the to-device token failed * feat: add logs for the locking functions * test: add a few tests for encryption sync * feat: add `reload_caches` method in the `EncryptionSync` + FFI bindings * chore: clean up FFI loop * encryption sync: Remove unused errors, specialize some errors * feat: include termination reason in the encryption sync loop * feat: add more logs * chore: fmt + clippy + doc * comment: precise only in the presence of another process * Tweak `room_list` APIs to include `_with_encryption` variants * chore: rustfmt