From 8a5a0e511e536e92dc82c10d2c667fc98b48fae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Thu, 27 May 2021 16:24:00 +0200 Subject: [PATCH] crypto: Don't await while holding a sync lock --- matrix_sdk_crypto/src/verification/requests.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/matrix_sdk_crypto/src/verification/requests.rs b/matrix_sdk_crypto/src/verification/requests.rs index 49c46431..4a01ee1a 100644 --- a/matrix_sdk_crypto/src/verification/requests.rs +++ b/matrix_sdk_crypto/src/verification/requests.rs @@ -389,7 +389,9 @@ impl VerificationRequest { ) -> Result<(), CryptoStoreError> { let content = content.into(); - if let InnerRequest::Ready(s) = &*self.inner.lock().unwrap() { + let inner = self.inner.lock().unwrap().clone(); + + if let InnerRequest::Ready(s) = inner { s.receive_start(sender, content).await?; } else { warn!( @@ -433,7 +435,7 @@ impl VerificationRequest { } } -#[derive(Debug)] +#[derive(Clone, Debug)] enum InnerRequest { Created(RequestState), Requested(RequestState),