diff --git a/vnt/src/channel/punch.rs b/vnt/src/channel/punch.rs index 6c424a5..216d069 100644 --- a/vnt/src/channel/punch.rs +++ b/vnt/src/channel/punch.rs @@ -99,10 +99,12 @@ impl NatInfo { nat_type, } } - pub fn update_addr(&mut self, index: usize, ip: Ipv4Addr, port: u16) { + pub fn update_addr(&mut self, index: usize, ip: Ipv4Addr, port: u16) -> bool { + let mut updated = false; if port != 0 { if let Some(public_port) = self.public_ports.get_mut(index) { if *public_port != port { + updated = true; log::info!("端口变化={}:{} index={}", ip, port, index) } *public_port = port; @@ -116,9 +118,11 @@ impl NatInfo { { if !self.public_ips.contains(&ip) { self.public_ips.push(ip); + updated = true; log::info!("ip变化={},{:?}", ip, self.public_ips) } } + updated } pub fn local_ipv4(&self) -> Option { self.local_ipv4 diff --git a/vnt/src/nat/mod.rs b/vnt/src/nat/mod.rs index 6056716..1a75fba 100644 --- a/vnt/src/nat/mod.rs +++ b/vnt/src/nat/mod.rs @@ -185,7 +185,7 @@ impl NatTest { } false } - pub fn update_addr(&self, index: usize, ip: Ipv4Addr, port: u16) { + pub fn update_addr(&self, index: usize, ip: Ipv4Addr, port: u16) -> bool { let mut guard = self.info.lock(); guard.update_addr(index, ip, port) } @@ -273,7 +273,9 @@ impl NatTest { && !ip.is_loopback() && !ip.is_private() { - self.update_addr(index, *addr.ip(), addr.port()); + if self.update_addr(index, *addr.ip(), addr.port()) { + log::info!("回应地址{:?},来源stun {:?}", addr, source_addr) + } } } }