diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-05 23:24:57 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-05 23:24:57 +0100 |
commit | 1c0c8f788c8125c90a097e5241b5e8fe2518d1d2 (patch) | |
tree | b5542fe00a472b5d5a8bcdd17fb3a34b75ad1dd0 /server/src/main.rs | |
parent | e15b39b2a9cf028b12cbe98f56674e58c5a6bd4c (diff) | |
download | weareserver-1c0c8f788c8125c90a097e5241b5e8fe2518d1d2.tar weareserver-1c0c8f788c8125c90a097e5241b5e8fe2518d1d2.tar.bz2 weareserver-1c0c8f788c8125c90a097e5241b5e8fe2518d1d2.tar.zst |
a
Diffstat (limited to 'server/src/main.rs')
-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(()) } |