From 8c4431248535356ca811fb9302f6bd3cfa210baa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20K=C3=B6sters?= Date: Wed, 30 Jun 2021 20:31:51 +0200 Subject: [PATCH] fix: e2ee verification --- src/client_server/sync.rs | 4 +++- src/client_server/to_device.rs | 3 +++ src/database/abstraction/sled.rs | 2 +- src/database/rooms.rs | 2 +- src/database/users.rs | 9 ++++----- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/client_server/sync.rs b/src/client_server/sync.rs index c57f1da..7d3af6b 100644 --- a/src/client_server/sync.rs +++ b/src/client_server/sync.rs @@ -89,7 +89,9 @@ pub async fn sync_events_route( let we_have_to_wait = rx.borrow().is_none(); if we_have_to_wait { - let _ = rx.changed().await; + if let Err(e) = rx.changed().await { + error!("Error waiting for sync: {}", e); + } } let result = match rx diff --git a/src/client_server/to_device.rs b/src/client_server/to_device.rs index 3bb135e..9faa255 100644 --- a/src/client_server/to_device.rs +++ b/src/client_server/to_device.rs @@ -19,7 +19,9 @@ pub async fn send_event_to_device_route( let sender_user = body.sender_user.as_ref().expect("user is authenticated"); let sender_device = body.sender_device.as_deref(); + // TODO: uncomment when https://github.com/vector-im/element-android/issues/3589 is solved // Check if this is a new transaction id + /* if db .transaction_ids .existing_txnid(sender_user, sender_device, &body.txn_id)? @@ -27,6 +29,7 @@ pub async fn send_event_to_device_route( { return Ok(send_event_to_device::Response.into()); } + */ for (target_user_id, map) in &body.messages { for (target_device_id_maybe, event) in map { diff --git a/src/database/abstraction/sled.rs b/src/database/abstraction/sled.rs index 271be1e..e58184d 100644 --- a/src/database/abstraction/sled.rs +++ b/src/database/abstraction/sled.rs @@ -64,7 +64,7 @@ impl Tree for SledEngineTree { backwards: bool, ) -> Box, Vec)> + Send> { let iter = if backwards { - self.0.range(..from) + self.0.range(..=from) } else { self.0.range(from..) }; diff --git a/src/database/rooms.rs b/src/database/rooms.rs index 4d66f9f..af0761f 100644 --- a/src/database/rooms.rs +++ b/src/database/rooms.rs @@ -1495,7 +1495,7 @@ impl Rooms { prefix.push(0xff); let mut current = prefix.clone(); - current.extend_from_slice(&until.to_be_bytes()); + current.extend_from_slice(&(until.saturating_sub(1)).to_be_bytes()); // -1 because we don't want event at `until` let current: &[u8] = ¤t; diff --git a/src/database/users.rs b/src/database/users.rs index f99084f..1480d3f 100644 --- a/src/database/users.rs +++ b/src/database/users.rs @@ -726,10 +726,9 @@ impl Users { json.insert("sender".to_owned(), sender.to_string().into()); json.insert("content".to_owned(), content); - self.todeviceid_events.insert( - &key, - &serde_json::to_vec(&json).expect("Map::to_vec always works"), - )?; + let value = serde_json::to_vec(&json).expect("Map::to_vec always works"); + + self.todeviceid_events.insert(&key, &value)?; Ok(()) } @@ -774,7 +773,7 @@ impl Users { for (key, _) in self .todeviceid_events - .iter_from(&last, true) + .iter_from(&last, true) // this includes last .take_while(move |(k, _)| k.starts_with(&prefix)) .map(|(key, _)| { Ok::<_, Error>((