summaryrefslogtreecommitdiff
path: root/server/src/network.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-23 15:09:21 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-23 15:09:21 +0100
commitf8c243d5a06cbb72f4757e2fb5421c3ec50d509c (patch)
treec008786b3a5f263bbdb90f7f3dce4577147c06b6 /server/src/network.rs
parent4c274eb8ff05dd09ba9d53217e325c166924be45 (diff)
downloadweareserver-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.rs13
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;