diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/src/main.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/server/src/main.rs b/server/src/main.rs index d9d65cc..cc55488 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -3,7 +3,7 @@ use clap::Parser; use log::{debug, info}; use std::{ collections::HashMap, - io::{BufReader, BufWriter}, + io::{BufReader, BufWriter, Write}, net::{IpAddr, TcpListener, TcpStream}, sync::{ Arc, Mutex, @@ -38,10 +38,13 @@ fn main() -> Result<()> { let (sock, addr) = listener.accept()?; info!("{addr} connected"); let (tx, rx) = channel(); - state.lock().unwrap().tx.insert(conn, tx); let state2 = state.clone(); let sock2 = sock.try_clone().unwrap(); spawn(move || { + for p in state2.lock().unwrap().tree.prime_client() { + tx.send(p).unwrap(); + } + state2.lock().unwrap().tx.insert(conn, tx); let _ = handle_conn_read(conn, sock, state2.clone()); info!("{addr} disconnected"); state2.lock().unwrap().tx.remove(&conn); @@ -66,6 +69,7 @@ fn handle_conn_write(conn: usize, sock: TcpStream, rx: Receiver<Packet>) -> Resu for packet in rx { debug!("{conn} -> {packet:?}"); packet.serialize(&mut sock)?; + sock.flush()?; } Ok(()) } |