From d5cd608045dced21b8976897325ead4e2f520985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Mon, 10 Aug 2020 14:11:55 +0200 Subject: [PATCH] base: Remove some unnecessary mutable borrows of the olm machine. --- matrix_sdk_base/src/client.rs | 32 ++++++++++++++++---------------- matrix_sdk_crypto/src/machine.rs | 32 ++++++++++++++++---------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/matrix_sdk_base/src/client.rs b/matrix_sdk_base/src/client.rs index 0719e593..dd5e0014 100644 --- a/matrix_sdk_base/src/client.rs +++ b/matrix_sdk_base/src/client.rs @@ -721,9 +721,9 @@ impl BaseClient { ref mut encrypted_event, )) = e { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - if let Some(o) = &mut *olm { + if let Some(o) = &*olm { if let Ok(decrypted) = o.decrypt_room_event(&encrypted_event, room_id).await { if let Ok(d) = decrypted.deserialize() { @@ -937,9 +937,9 @@ impl BaseClient { #[cfg(feature = "encryption")] { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - if let Some(o) = &mut *olm { + if let Some(o) = &*olm { // Let the crypto machine handle the sync response, this // decryptes to-device events, but leaves room events alone. // This makes sure that we have the deryption keys for the room @@ -1033,9 +1033,9 @@ impl BaseClient { #[cfg(feature = "encryption")] { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - if let Some(o) = &mut *olm { + if let Some(o) = &*olm { let room = matrix_room.read().await; // If the room is encrypted, update the tracked users. @@ -1275,9 +1275,9 @@ impl BaseClient { &self, users: impl Iterator, ) -> Result, KeyAlgorithm>>> { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - match &mut *olm { + match &*olm { Some(o) => Ok(o.get_missing_sessions(users).await?), None => Ok(BTreeMap::new()), } @@ -1313,9 +1313,9 @@ impl BaseClient { room_id: &RoomId, content: MsgEventContent, ) -> Result { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - match &mut *olm { + match &*olm { Some(o) => Ok(o.encrypt(room_id, content).await?), None => panic!("Olm machine wasn't started"), } @@ -1363,9 +1363,9 @@ impl BaseClient { #[cfg(feature = "encryption")] #[cfg_attr(docsrs, doc(cfg(feature = "encryption")))] pub async fn receive_keys_upload_response(&self, response: &KeysUploadResponse) -> Result<()> { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - let o = olm.as_mut().expect("Client isn't logged in."); + let o = olm.as_ref().expect("Client isn't logged in."); o.receive_keys_upload_response(response).await?; Ok(()) } @@ -1382,9 +1382,9 @@ impl BaseClient { #[cfg(feature = "encryption")] #[cfg_attr(docsrs, doc(cfg(feature = "encryption")))] pub async fn receive_keys_claim_response(&self, response: &KeysClaimResponse) -> Result<()> { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - let o = olm.as_mut().expect("Client isn't logged in."); + let o = olm.as_ref().expect("Client isn't logged in."); o.receive_keys_claim_response(response).await?; Ok(()) } @@ -1401,9 +1401,9 @@ impl BaseClient { #[cfg(feature = "encryption")] #[cfg_attr(docsrs, doc(cfg(feature = "encryption")))] pub async fn receive_keys_query_response(&self, response: &KeysQueryResponse) -> Result<()> { - let mut olm = self.olm.lock().await; + let olm = self.olm.lock().await; - let o = olm.as_mut().expect("Client isn't logged in."); + let o = olm.as_ref().expect("Client isn't logged in."); o.receive_keys_query_response(response).await?; // TODO notify our callers of new devices via some callback. Ok(()) diff --git a/matrix_sdk_crypto/src/machine.rs b/matrix_sdk_crypto/src/machine.rs index 3e8667d9..16db2042 100644 --- a/matrix_sdk_crypto/src/machine.rs +++ b/matrix_sdk_crypto/src/machine.rs @@ -213,7 +213,7 @@ impl OlmMachine { } /// Update the count of one-time keys that are currently on the server. - fn update_key_count(&mut self, count: u64) { + fn update_key_count(&self, count: u64) { self.account.update_uploaded_key_count(count); } @@ -225,7 +225,7 @@ impl OlmMachine { /// performed. #[instrument] pub async fn receive_keys_upload_response( - &mut self, + &self, response: &keys::upload_keys::Response, ) -> OlmResult<()> { if !self.account.shared() { @@ -275,7 +275,7 @@ impl OlmMachine { /// `users` - The list of users that we should check if we lack a session /// with one of their devices. pub async fn get_missing_sessions( - &mut self, + &self, users: impl Iterator, ) -> OlmResult, KeyAlgorithm>>> { let mut missing = BTreeMap::new(); @@ -320,7 +320,7 @@ impl OlmMachine { /// /// * `response` - The response containing the claimed one-time keys. pub async fn receive_keys_claim_response( - &mut self, + &self, response: &keys::claim_keys::Response, ) -> OlmResult<()> { // TODO log the failures here @@ -377,7 +377,7 @@ impl OlmMachine { } async fn handle_devices_from_key_query( - &mut self, + &self, device_keys_map: &BTreeMap, DeviceKeys>>, ) -> StoreResult> { let mut changed_devices = Vec::new(); @@ -471,7 +471,7 @@ impl OlmMachine { /// * `response` - The keys query response of the request that the client /// performed. pub async fn receive_keys_query_response( - &mut self, + &self, response: &keys::get_keys::Response, ) -> OlmResult> { let changed_devices = self @@ -500,7 +500,7 @@ impl OlmMachine { /// This try to decrypt an Olm message using all the sessions we share /// have with the given sender. async fn try_decrypt_olm_message( - &mut self, + &self, sender: &UserId, sender_key: &str, message: &OlmMessage, @@ -562,7 +562,7 @@ impl OlmMachine { } async fn decrypt_olm_message( - &mut self, + &self, sender: &UserId, sender_key: &str, message: OlmMessage, @@ -698,7 +698,7 @@ impl OlmMachine { /// /// * `event` - The to-device event that should be decrypted. async fn decrypt_to_device_event( - &mut self, + &self, event: &ToDeviceEvent, ) -> OlmResult> { info!("Decrypting to-device event"); @@ -760,7 +760,7 @@ impl OlmMachine { /// Create a group session from a room key and add it to our crypto store. async fn add_room_key( - &mut self, + &self, sender_key: &str, signing_key: &str, event: &mut ToDeviceEvent, @@ -867,7 +867,7 @@ impl OlmMachine { /// /// * `content` - The content of the event that should be encrypted. async fn olm_encrypt( - &mut self, + &self, recipient_device: &Device, event_type: EventType, content: Value, @@ -1038,7 +1038,7 @@ impl OlmMachine { /// /// * `event` - The decrypted to-device event. async fn handle_decrypted_to_device_event( - &mut self, + &self, sender_key: &str, signing_key: &str, event: &Raw, @@ -1101,7 +1101,7 @@ impl OlmMachine { /// /// * `response` - The sync latest sync response. #[instrument(skip(response))] - pub async fn receive_sync_response(&mut self, response: &mut SyncResponse) { + pub async fn receive_sync_response(&self, response: &mut SyncResponse) { self.verification_machine.garbage_collect(); let one_time_key_count = response @@ -1167,7 +1167,7 @@ impl OlmMachine { /// /// * `room_id` - The ID of the room where the event was sent to. pub async fn decrypt_room_event( - &mut self, + &self, event: &SyncMessageEvent, room_id: &RoomId, ) -> MegolmResult> { @@ -1204,7 +1204,7 @@ impl OlmMachine { /// key query. /// /// Returns true if the user was queued up for a key query, false otherwise. - pub async fn mark_user_as_changed(&mut self, user_id: &UserId) -> StoreResult { + pub async fn mark_user_as_changed(&self, user_id: &UserId) -> StoreResult { if self.store.read().await.tracked_users().contains(user_id) { self.store .write() @@ -1231,7 +1231,7 @@ impl OlmMachine { /// considered for a key query. /// /// Use the `mark_user_as_changed()` if the user really needs a key query. - pub async fn update_tracked_users<'a, I>(&mut self, users: I) + pub async fn update_tracked_users<'a, I>(&self, users: I) where I: IntoIterator, {