open-trade 4 years ago
parent
commit
34a55668f3
1 changed files with 13 additions and 10 deletions
  1. 13 10
      src/rendezvous_server.rs

+ 13 - 10
src/rendezvous_server.rs

@@ -640,6 +640,17 @@ impl RendezvousServer {
640
                 },
640
                 },
641
             };
641
             };
642
             let socket_addr = AddrMangle::encode(addr);
642
             let socket_addr = AddrMangle::encode(addr);
643
+            let relay_server = {
644
+                if self.relay_servers.is_empty() {
645
+                    "".to_owned()
646
+                } else {
647
+                    let i = unsafe {
648
+                        ROTATION_RELAY_SERVER += 1;
649
+                        ROTATION_RELAY_SERVER % self.relay_servers.len()
650
+                    };
651
+                    self.relay_servers[i].clone()
652
+                }
653
+            };
643
             if same_intranet {
654
             if same_intranet {
644
                 log::debug!(
655
                 log::debug!(
645
                     "Fetch local addr {:?} {:?} request from {:?}",
656
                     "Fetch local addr {:?} {:?} request from {:?}",
@@ -647,13 +658,9 @@ impl RendezvousServer {
647
                     &peer.socket_addr,
658
                     &peer.socket_addr,
648
                     &addr
659
                     &addr
649
                 );
660
                 );
650
-                let i = unsafe {
651
-                    ROTATION_RELAY_SERVER += 1;
652
-                    ROTATION_RELAY_SERVER % self.relay_servers.len()
653
-                };
654
                 msg_out.set_fetch_local_addr(FetchLocalAddr {
661
                 msg_out.set_fetch_local_addr(FetchLocalAddr {
655
                     socket_addr,
662
                     socket_addr,
656
-                    relay_server: self.relay_servers[i].clone(),
663
+                    relay_server,
657
                     ..Default::default()
664
                     ..Default::default()
658
                 });
665
                 });
659
             } else {
666
             } else {
@@ -663,14 +670,10 @@ impl RendezvousServer {
663
                     &peer.socket_addr,
670
                     &peer.socket_addr,
664
                     &addr
671
                     &addr
665
                 );
672
                 );
666
-                let i = unsafe {
667
-                    ROTATION_RELAY_SERVER += 1;
668
-                    ROTATION_RELAY_SERVER % self.relay_servers.len()
669
-                };
670
                 msg_out.set_punch_hole(PunchHole {
673
                 msg_out.set_punch_hole(PunchHole {
671
                     socket_addr,
674
                     socket_addr,
672
                     nat_type: ph.nat_type,
675
                     nat_type: ph.nat_type,
673
-                    relay_server: self.relay_servers[i].clone(),
676
+                    relay_server,
674
                     ..Default::default()
677
                     ..Default::default()
675
                 });
678
                 });
676
             }
679
             }