From fbe01d8cbfd979ba357e2d36a074c5b4df2819cf Mon Sep 17 00:00:00 2001 From: lubeilin <1791778603@qq.com> Date: Sat, 29 Jul 2023 21:14:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D--route=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vnt/src/channel/channel.rs | 10 ++++++---- vnt/src/channel/idle.rs | 1 + 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/vnt/src/channel/channel.rs b/vnt/src/channel/channel.rs index 93b15ff..4dc9898 100644 --- a/vnt/src/channel/channel.rs +++ b/vnt/src/channel/channel.rs @@ -257,9 +257,11 @@ impl Context { } } pub fn route_to_id(&self, route_key: &RouteKey) -> Option { - for x in self.inner.route_table_time.iter() { - if &x.key().0 == route_key { - return Some(x.key().1); + for x in self.inner.route_table.iter() { + for route in x.value() { + if &route.route_key() == route_key { + return Some(*x.key()); + } } } None @@ -311,8 +313,8 @@ impl Context { drop(v); routes.retain(|x| x.route_key() != route_key); self.inner.route_table.insert(*id, routes); - self.inner.route_table_time.remove(&(route_key, *id)); } + self.inner.route_table_time.remove(&(route_key, *id)); drop(guard); } pub fn update_read_time(&self, id: &Ipv4Addr, route_key: &RouteKey) { diff --git a/vnt/src/channel/idle.rs b/vnt/src/channel/idle.rs index 06c95b7..4358331 100644 --- a/vnt/src/channel/idle.rs +++ b/vnt/src/channel/idle.rs @@ -29,6 +29,7 @@ impl Idle { for entry in self.context.inner.route_table_time.iter() { let last_read = entry.value().load().elapsed(); if last_read >= self.read_idle { + entry.remove(); return Ok((entry.key().1.clone(), entry.key().0.clone())); } else { if max < last_read {