|
|
@@ -332,6 +332,8 @@ impl RendezvousServer {
|
|
332
|
332
|
let mut res = register_pk_response::Result::OK;
|
|
333
|
333
|
if !id_change_support {
|
|
334
|
334
|
res = register_pk_response::Result::NOT_SUPPORT;
|
|
|
335
|
+ } else if !hbb_common::is_valid_custom_id(&rk.id) {
|
|
|
336
|
+ res = register_pk_response::Result::INVALID_ID_FORMAT;
|
|
335
|
337
|
} else if let Some(peer) = rs.pm.get(&rk.id).await {
|
|
336
|
338
|
if peer.uuid != rk.uuid {
|
|
337
|
339
|
res = register_pk_response::Result::ID_EXISTS;
|
|
|
@@ -398,9 +400,7 @@ impl RendezvousServer {
|
|
398
|
400
|
}
|
|
399
|
401
|
let id = rk.id;
|
|
400
|
402
|
let mut res = register_pk_response::Result::OK;
|
|
401
|
|
- if !hbb_common::is_valid_custom_id(&id) {
|
|
402
|
|
- res = register_pk_response::Result::INVALID_ID_FORMAT;
|
|
403
|
|
- } else if let Some(peer) = self.pm.get(&id).await {
|
|
|
403
|
+ if let Some(peer) = self.pm.get(&id).await {
|
|
404
|
404
|
if peer.uuid != rk.uuid {
|
|
405
|
405
|
log::warn!(
|
|
406
|
406
|
"Peer {} uuid mismatch: {:?} vs {:?}",
|
|
|
@@ -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
|
}
|