diff options
author | Thomas Linford <tlinford@users.noreply.github.com> | 2023-04-13 10:02:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-13 10:02:07 +0200 |
commit | 7e207f4c0cd4566d5c3cd14c793b06697ac64f8b (patch) | |
tree | 52f8fdd31f2999b65efecbd47f2325d54dad4c3f | |
parent | b40f5ef2ca28ddda9206c7975b33878f6db9137f (diff) |
fix: do not hold on to router thread handle until server exit (#2328)
* do not hold on to thread handle until server exit
* fix tests
-rw-r--r-- | zellij-server/src/lib.rs | 40 | ||||
-rw-r--r-- | zellij-server/src/tab/unit/tab_integration_tests.rs | 4 |
2 files changed, 18 insertions, 26 deletions
diff --git a/zellij-server/src/lib.rs b/zellij-server/src/lib.rs index bb18912ea..45ea85940 100644 --- a/zellij-server/src/lib.rs +++ b/zellij-server/src/lib.rs @@ -20,7 +20,7 @@ use pty_writer::{pty_writer_main, PtyWriteInstruction}; use std::collections::{HashMap, HashSet}; use std::{ path::PathBuf, - sync::{Arc, Mutex, RwLock}, + sync::{Arc, RwLock}, thread, }; use zellij_utils::envs; @@ -260,8 +260,6 @@ pub fn start_server(mut os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) { }) }); - let thread_handles = Arc::new(Mutex::new(Vec::new())); - let _ = thread::Builder::new() .name("server_listener".to_string()) .spawn({ @@ -274,7 +272,6 @@ pub fn start_server(mut os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) { let session_state = session_state.clone(); let to_server = to_server.clone(); let socket_path = socket_path.clone(); - let thread_handles = thread_handles.clone(); move || { drop(std::fs::remove_file(&socket_path)); let listener = LocalSocketListener::bind(&*socket_path).unwrap(); @@ -291,22 +288,20 @@ pub fn start_server(mut os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) { let session_data = session_data.clone(); let session_state = session_state.clone(); let to_server = to_server.clone(); - thread_handles.lock().unwrap().push( - thread::Builder::new() - .name("server_router".to_string()) - .spawn(move || { - route_thread_main( - session_data, - session_state, - os_input, - to_server, - receiver, - client_id, - ) - .fatal() - }) - .unwrap(), - ); + thread::Builder::new() + .name("server_router".to_string()) + .spawn(move || { + route_thread_main( + session_data, + session_state, + os_input, + to_server, + receiver, + client_id, + ) + .fatal() + }) + .unwrap(); }, Err(err) => { panic!("err {:?}", err); @@ -642,11 +637,6 @@ pub fn start_server(mut os_input: Box<dyn ServerOsApi>, socket_path: PathBuf) { // Drop cached session data before exit. *session_data.write().unwrap() = None; - thread_handles - .lock() - .unwrap() - .drain(..) - .for_each(|h| drop(h.join())); drop(std::fs::remove_file(&socket_path)); } diff --git a/zellij-server/src/tab/unit/tab_integration_tests.rs b/zellij-server/src/tab/unit/tab_integration_tests.rs index 24fa1b2f1..48d841a5d 100644 --- a/zellij-server/src/tab/unit/tab_integration_tests.rs +++ b/zellij-server/src/tab/unit/tab_integration_tests.rs @@ -2,7 +2,7 @@ use super::{Output, Tab}; use crate::panes::sixel::SixelImageStore; use crate::screen::CopyOptions; use crate::Arc; -use crate::Mutex; + use crate::{ os_input_output::{AsyncReader, Pid, ServerOsApi}, panes::PaneId, @@ -11,6 +11,8 @@ use crate::{ ClientId, }; use std::path::PathBuf; +use std::sync::Mutex; + use zellij_utils::channels::Receiver; use zellij_utils::data::Direction; use zellij_utils::data::Resize; |