From 34a55668f39f281b6240c48f06be968362695205 Mon Sep 17 00:00:00 2001 From: open-trade Date: Thu, 8 Apr 2021 14:52:30 +0800 Subject: [PATCH] bug fix --- src/rendezvous_server.rs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/rendezvous_server.rs b/src/rendezvous_server.rs index b7e02e1..dff17e6 100644 --- a/src/rendezvous_server.rs +++ b/src/rendezvous_server.rs @@ -640,6 +640,17 @@ impl RendezvousServer { }, }; let socket_addr = AddrMangle::encode(addr); + let relay_server = { + if self.relay_servers.is_empty() { + "".to_owned() + } else { + let i = unsafe { + ROTATION_RELAY_SERVER += 1; + ROTATION_RELAY_SERVER % self.relay_servers.len() + }; + self.relay_servers[i].clone() + } + }; if same_intranet { log::debug!( "Fetch local addr {:?} {:?} request from {:?}", @@ -647,13 +658,9 @@ impl RendezvousServer { &peer.socket_addr, &addr ); - let i = unsafe { - ROTATION_RELAY_SERVER += 1; - ROTATION_RELAY_SERVER % self.relay_servers.len() - }; msg_out.set_fetch_local_addr(FetchLocalAddr { socket_addr, - relay_server: self.relay_servers[i].clone(), + relay_server, ..Default::default() }); } else { @@ -663,14 +670,10 @@ impl RendezvousServer { &peer.socket_addr, &addr ); - let i = unsafe { - ROTATION_RELAY_SERVER += 1; - ROTATION_RELAY_SERVER % self.relay_servers.len() - }; msg_out.set_punch_hole(PunchHole { socket_addr, nat_type: ph.nat_type, - relay_server: self.relay_servers[i].clone(), + relay_server, ..Default::default() }); }