|
|
@@ -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
|
}
|