Browse Source

Merge branch 'master' of https://github.com/open-trade/hbbs

opentrade 4 years ago
parent
commit
918dfc3bdd
1 changed files with 16 additions and 13 deletions
  1. 16 13
      src/rendezvous_server.rs

+ 16 - 13
src/rendezvous_server.rs

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