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