更新地址成功则返回true
This commit is contained in:
@@ -99,10 +99,12 @@ impl NatInfo {
|
|||||||
nat_type,
|
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 port != 0 {
|
||||||
if let Some(public_port) = self.public_ports.get_mut(index) {
|
if let Some(public_port) = self.public_ports.get_mut(index) {
|
||||||
if *public_port != port {
|
if *public_port != port {
|
||||||
|
updated = true;
|
||||||
log::info!("端口变化={}:{} index={}", ip, port, index)
|
log::info!("端口变化={}:{} index={}", ip, port, index)
|
||||||
}
|
}
|
||||||
*public_port = port;
|
*public_port = port;
|
||||||
@@ -116,9 +118,11 @@ impl NatInfo {
|
|||||||
{
|
{
|
||||||
if !self.public_ips.contains(&ip) {
|
if !self.public_ips.contains(&ip) {
|
||||||
self.public_ips.push(ip);
|
self.public_ips.push(ip);
|
||||||
|
updated = true;
|
||||||
log::info!("ip变化={},{:?}", ip, self.public_ips)
|
log::info!("ip变化={},{:?}", ip, self.public_ips)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
updated
|
||||||
}
|
}
|
||||||
pub fn local_ipv4(&self) -> Option<Ipv4Addr> {
|
pub fn local_ipv4(&self) -> Option<Ipv4Addr> {
|
||||||
self.local_ipv4
|
self.local_ipv4
|
||||||
|
|||||||
+4
-2
@@ -185,7 +185,7 @@ impl NatTest {
|
|||||||
}
|
}
|
||||||
false
|
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();
|
let mut guard = self.info.lock();
|
||||||
guard.update_addr(index, ip, port)
|
guard.update_addr(index, ip, port)
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,9 @@ impl NatTest {
|
|||||||
&& !ip.is_loopback()
|
&& !ip.is_loopback()
|
||||||
&& !ip.is_private()
|
&& !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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user