From 6d12ed2046dcc6e495e04260437014e3ab6b93d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Thu, 23 Apr 2020 14:56:59 +0200 Subject: [PATCH] async_client: Don't request a write lock for crypto based requests. The crypto state machine is in the base client behind a separate lock so there's no need to require write access. This removes a deadlock if we're trying to send an encrypted message from a event emitter callback, since emitting an event fetches a read lock as well. --- src/async_client.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/async_client.rs b/src/async_client.rs index beae3f49..54098166 100644 --- a/src/async_client.rs +++ b/src/async_client.rs @@ -962,7 +962,7 @@ impl AsyncClient { let response = self.send(request).await?; self.base_client - .write() + .read() .await .receive_keys_claim_response(&response) .await?; @@ -1032,7 +1032,7 @@ impl AsyncClient { let response = self.send(request).await?; self.base_client - .write() + .read() .await .receive_keys_upload_response(&response) .await?; @@ -1081,7 +1081,7 @@ impl AsyncClient { let response = self.send(request).await?; self.base_client - .write() + .read() .await .receive_keys_query_response(&response) .await?;