mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-07 18:24:36 +00:00
release dashmap memory (#1485)
This commit is contained in:
@@ -23,7 +23,7 @@ use tracing::{instrument, Instrument};
|
||||
|
||||
use super::{packet_def::V6HolePunchPacket, TunnelInfo};
|
||||
use crate::{
|
||||
common::{join_joinset_background, scoped_task::ScopedTask},
|
||||
common::{join_joinset_background, scoped_task::ScopedTask, shrink_dashmap},
|
||||
tunnel::{
|
||||
build_url_from_socket_addr,
|
||||
common::{reserve_buf, TunnelWrapper},
|
||||
@@ -569,7 +569,10 @@ impl TunnelListener for UdpTunnelListener {
|
||||
if let Some(err) = err {
|
||||
tracing::error!(?err, "udp close event error");
|
||||
}
|
||||
sock_map.upgrade().map(|v| v.remove(&dst_addr));
|
||||
if let Some(sock_map) = sock_map.upgrade() {
|
||||
sock_map.remove(&dst_addr);
|
||||
shrink_dashmap(&sock_map, None);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -21,10 +21,13 @@ use rand::RngCore;
|
||||
use tokio::{net::UdpSocket, sync::Mutex, task::JoinSet};
|
||||
|
||||
use super::TunnelInfo;
|
||||
use crate::tunnel::{
|
||||
build_url_from_socket_addr,
|
||||
common::TunnelWrapper,
|
||||
packet_def::{ZCPacket, WG_TUNNEL_HEADER_SIZE},
|
||||
use crate::{
|
||||
common::shrink_dashmap,
|
||||
tunnel::{
|
||||
build_url_from_socket_addr,
|
||||
common::TunnelWrapper,
|
||||
packet_def::{ZCPacket, WG_TUNNEL_HEADER_SIZE},
|
||||
},
|
||||
};
|
||||
|
||||
use super::{
|
||||
@@ -491,12 +494,13 @@ impl WgTunnelListener {
|
||||
) {
|
||||
let mut tasks = JoinSet::new();
|
||||
|
||||
let peer_map_clone = peer_map.clone();
|
||||
let peer_map_clone: Arc<DashMap<SocketAddr, Arc<WgPeer>>> = peer_map.clone();
|
||||
tasks.spawn(async move {
|
||||
loop {
|
||||
peer_map_clone.retain(|_, peer| {
|
||||
peer.access_time.load().elapsed().as_secs() < 61 && !peer.stopped()
|
||||
});
|
||||
shrink_dashmap(&peer_map_clone, None);
|
||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user