diff --git a/src/client.rs b/src/client.rs index dab55ae1e..83e7788ea 100644 --- a/src/client.rs +++ b/src/client.rs @@ -3414,11 +3414,10 @@ impl Client { self.resolve_sent_node_waiters(&Arc::new(node.clone())); } - let mut plaintext_buf = Vec::with_capacity(1024); - if let Err(e) = wacore_binary::marshal::marshal_to(&node, &mut plaintext_buf) { + let plaintext_buf = wacore_binary::marshal::marshal_auto(&node).map_err(|e| { error!("Failed to marshal node: {e:?}"); - return Err(SocketError::Crypto("Marshal error".to_string()).into()); - } + SocketError::Crypto("Marshal error".to_string()) + })?; self.send_raw_bytes(plaintext_buf).await } diff --git a/src/message.rs b/src/message.rs index 07f2a203f..81d0ce184 100644 --- a/src/message.rs +++ b/src/message.rs @@ -1968,7 +1968,7 @@ mod tests { let phone_sender_key_name = SenderKeyName::from_jid(&group_jid, &phone_protocol_address); let phone_lookup_result = { - let mut device_guard = device_arc.write().await; + let device_guard = device_arc.read().await; device_guard.load_sender_key(&phone_sender_key_name).await }; @@ -1981,7 +1981,7 @@ mod tests { // Try to retrieve using LID address (THE FIX) let lid_lookup_result = { - let mut device_guard = device_arc.write().await; + let device_guard = device_arc.read().await; device_guard.load_sender_key(&lid_sender_key_name).await }; @@ -2081,7 +2081,7 @@ mod tests { // Should find with LID address let lid_lookup = { - let mut device_guard = device_arc.write().await; + let device_guard = device_arc.read().await; device_guard.load_sender_key(&lid_sender_key_name).await }; assert!( @@ -2092,7 +2092,7 @@ mod tests { // Should NOT find with phone number address (the bug) let phone_lookup = { - let mut device_guard = device_arc.write().await; + let device_guard = device_arc.read().await; device_guard.load_sender_key(&phone_sender_key_name).await }; assert!( @@ -2524,7 +2524,7 @@ mod tests { // Verify it's stored under display JID let lookup_with_display = { - let mut device_guard = device_arc.write().await; + let device_guard = device_arc.read().await; device_guard.load_sender_key(&display_sender_key_name).await }; assert!( @@ -2540,7 +2540,7 @@ mod tests { SenderKeyName::from_jid(&group_jid, &encryption_protocol_address); let lookup_with_encryption = { - let mut device_guard = device_arc.write().await; + let device_guard = device_arc.read().await; device_guard .load_sender_key(&encryption_sender_key_name) .await diff --git a/src/store/signal.rs b/src/store/signal.rs index 20da8ae8a..95dce8a2a 100644 --- a/src/store/signal.rs +++ b/src/store/signal.rs @@ -483,7 +483,7 @@ impl SenderKeyStore for Device { } async fn load_sender_key( - &mut self, + &self, sender_key_name: &SenderKeyName, ) -> SignalResult> { match self diff --git a/src/store/signal_adapter.rs b/src/store/signal_adapter.rs index 328258fe9..6e2151ac0 100644 --- a/src/store/signal_adapter.rs +++ b/src/store/signal_adapter.rs @@ -252,7 +252,7 @@ impl wacore::libsignal::protocol::SenderKeyStore for SenderKeyAdapter { } async fn load_sender_key( - &mut self, + &self, sender_key_name: &SenderKeyName, ) -> wacore::libsignal::protocol::error::Result< Option, diff --git a/wacore/benches/send_receive_benchmark.rs b/wacore/benches/send_receive_benchmark.rs index 1146d323d..ab3ce4d92 100644 --- a/wacore/benches/send_receive_benchmark.rs +++ b/wacore/benches/send_receive_benchmark.rs @@ -136,7 +136,7 @@ impl SenderKeyStore for MemSenderKeyStore { self.0.insert(n.clone(), r); Ok(()) } - async fn load_sender_key(&mut self, n: &SenderKeyName) -> SigResult> { + async fn load_sender_key(&self, n: &SenderKeyName) -> SigResult> { Ok(self.0.get(n).cloned()) } } diff --git a/wacore/libsignal/benches/libsignal_benchmark.rs b/wacore/libsignal/benches/libsignal_benchmark.rs index 2a150f6aa..faa571a8e 100644 --- a/wacore/libsignal/benches/libsignal_benchmark.rs +++ b/wacore/libsignal/benches/libsignal_benchmark.rs @@ -211,7 +211,7 @@ impl SenderKeyStore for InMemorySenderKeyStore { } async fn load_sender_key( - &mut self, + &self, sender_key_name: &SenderKeyName, ) -> wacore_libsignal::protocol::error::Result> { Ok(self.sender_keys.get(sender_key_name).cloned()) diff --git a/wacore/libsignal/src/protocol/storage/traits.rs b/wacore/libsignal/src/protocol/storage/traits.rs index 2498b1200..9e703d181 100644 --- a/wacore/libsignal/src/protocol/storage/traits.rs +++ b/wacore/libsignal/src/protocol/storage/traits.rs @@ -154,7 +154,7 @@ pub trait SenderKeyStore: ThreadSafe { /// Look up the entry corresponding to `(sender, distribution_id)`. async fn load_sender_key( - &mut self, + &self, sender_key_name: &SenderKeyName, ) -> Result>; }