diff options
Diffstat (limited to 'src/client_main.rs')
| -rw-r--r-- | src/client_main.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/client_main.rs b/src/client_main.rs index 70dd857..43660d7 100644 --- a/src/client_main.rs +++ b/src/client_main.rs @@ -32,6 +32,7 @@ pub mod world; use clap::{App, Arg}; use server::DEFAULT_PORT; use std::net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr, ToSocketAddrs}; +use std::sync::atomic::Ordering; fn main() { pretty_env_logger::init(); @@ -72,10 +73,10 @@ fn main() { let server_handle = if !matches.is_present("connect") { Some({ - let (server_handle, port) = + let (server_handle, server_running, port) = server::start_any_port(use_ipv4).expect("Unable to start local server"); server_port = port; - server_handle + (server_handle, server_running) }) } else { None @@ -111,7 +112,8 @@ fn main() { client::run(dbg!(server_address)); - if let Some(handle) = server_handle { + if let Some((handle, running)) = server_handle { + running.store(false, Ordering::Relaxed); handle.join().expect("Server thread closed unexpectedly."); } } |
