diff options
author | Himbeer <himbeerserverde@gmail.com> | 2024-02-23 17:11:02 +0100 |
---|---|---|
committer | Himbeer <himbeerserverde@gmail.com> | 2024-02-23 17:11:02 +0100 |
commit | af1ba944474e8ade1d65c70aa37ee5f121dadfba (patch) | |
tree | 79946312e824a0fb1ffa7ac8492aeddf32a672b0 | |
parent | 0ee784abc8ba2329c92c78ba470c0ec66928bda7 (diff) |
only ever lock stream_conn immutably
fixes rx deadlock
-rw-r--r-- | hbak_common/src/conn.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/hbak_common/src/conn.rs b/hbak_common/src/conn.rs index 3f84fa7..736705c 100644 --- a/hbak_common/src/conn.rs +++ b/hbak_common/src/conn.rs @@ -24,7 +24,7 @@ use crate::{NetworkError, RemoteError}; use std::io::{self, BufReader, BufWriter, Read, Write}; use std::marker::PhantomData; use std::net::{SocketAddr, TcpStream}; -use std::ops::DerefMut; +use std::ops::{Deref, DerefMut}; use std::sync::{Arc, Mutex, RwLock}; use std::thread; use std::time::Duration; @@ -375,7 +375,7 @@ impl StreamConn<Active> { let mut stream = None; let start_streaming = Arc::new(Mutex::new(false)); - let mut handle = |stream_conn: &mut Self, + let mut handle = |stream_conn: &Self, message: StreamMessage| -> Result<bool, NetworkError> { match message { @@ -501,7 +501,7 @@ impl StreamConn<Active> { Err(e) => return Err(e), }; - if handle(&mut stream_conn.write().unwrap(), message)? { + if handle(stream_conn.read().unwrap().deref(), message)? { remote_done = true; } } |