diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-23 15:09:21 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-23 15:09:21 +0100 |
commit | f8c243d5a06cbb72f4757e2fb5421c3ec50d509c (patch) | |
tree | c008786b3a5f263bbdb90f7f3dce4577147c06b6 /server/src/network.rs | |
parent | 4c274eb8ff05dd09ba9d53217e325c166924be45 (diff) | |
download | weareserver-f8c243d5a06cbb72f4757e2fb5421c3ec50d509c.tar weareserver-f8c243d5a06cbb72f4757e2fb5421c3ec50d509c.tar.bz2 weareserver-f8c243d5a06cbb72f4757e2fb5421c3ec50d509c.tar.zst |
fix endless loading on broken meshes
Diffstat (limited to 'server/src/network.rs')
-rw-r--r-- | server/src/network.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/server/src/network.rs b/server/src/network.rs index ec65218..19498c5 100644 --- a/server/src/network.rs +++ b/server/src/network.rs @@ -30,11 +30,13 @@ use std::{ use weareshared::{helper::ReadWrite, packets::Packet, tree::PacketSink}; type Conns = Arc<Mutex<HashMap<u128, (SyncSender<Arc<Vec<u8>>>, Option<SocketAddr>)>>>; + pub struct ServerNetwork { conns: Conns, udp_sock: Arc<UdpSocket>, pub recv: Receiver<(u128, Packet)>, } + impl ServerNetwork { pub fn new(addr: SocketAddr) -> Result<Self> { let (recv_tx, recv_rx) = channel(); @@ -118,10 +120,13 @@ fn serve_udp(udp_sock: Arc<UdpSocket>, conns: Conns, recv_tx: Sender<(u128, Pack if let Packet::Connect(id) = &packet { if let Some((_send, udp_addr)) = conns.lock().unwrap().get_mut(id) { *udp_addr = Some(addr); - cstates.insert(addr, CState { - conn_id: *id, - last_ack: Instant::now(), - }); + cstates.insert( + addr, + CState { + conn_id: *id, + last_ack: Instant::now(), + }, + ); } } else if let Some(conn) = cstates.get(&addr) { let cid = conn.conn_id; |