diff --git a/vnt/src/channel/context.rs b/vnt/src/channel/context.rs index b7f78c6..47a4a83 100644 --- a/vnt/src/channel/context.rs +++ b/vnt/src/channel/context.rs @@ -453,7 +453,8 @@ impl RouteTable { } pub fn need_punch(&self, id: &Ipv4Addr) -> bool { if let Some((_, v)) = self.route_table.read().get(id) { - if v.iter().filter(|(k, _)| k.is_p2p()).count() >= self.channel_num { + //存在p2p的通道则不再打洞 + if v.iter().filter(|(k, _)| k.is_p2p()).count() >= 1 { return false; } } diff --git a/vnt/src/channel/punch.rs b/vnt/src/channel/punch.rs index 0719205..bb20834 100644 --- a/vnt/src/channel/punch.rs +++ b/vnt/src/channel/punch.rs @@ -350,11 +350,6 @@ impl Punch { max: usize, ) -> io::Result<()> { let mut count = 0; - let index = if self.context.channel_num() == 1 { - 0 - } else { - rand::thread_rng().gen_range(0..self.context.channel_num()) - }; for port in ports { for pub_ip in ips { count += 1; @@ -362,7 +357,7 @@ impl Punch { return Ok(()); } let addr = SocketAddr::V4(SocketAddrV4::new(*pub_ip, *port)); - self.context.send_main_udp(index, buf, addr)?; + self.context.send_main_udp(0, buf, addr)?; thread::sleep(Duration::from_millis(2)); } }