summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/src')
-rw-r--r--server/src/main.rs8
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(())
}