open-trade 5 years ago
parent
commit
1114d5d917
1 changed files with 13 additions and 4 deletions
  1. 13 4
      src/rendezvous_server.rs

+ 13 - 4
src/rendezvous_server.rs

@@ -23,7 +23,7 @@ use std::{
23
     time::Instant,
23
     time::Instant,
24
 };
24
 };
25
 
25
 
26
-#[derive(Clone)]
26
+#[derive(Clone, Debug)]
27
 struct Peer {
27
 struct Peer {
28
     socket_addr: SocketAddr,
28
     socket_addr: SocketAddr,
29
     last_reg_time: Instant,
29
     last_reg_time: Instant,
@@ -80,6 +80,7 @@ impl PeerMap {
80
                 pk: pk.clone(),
80
                 pk: pk.clone(),
81
             },
81
             },
82
         );
82
         );
83
+        drop(lock);
83
         let ip = socket_addr.ip().to_string();
84
         let ip = socket_addr.ip().to_string();
84
         self.db.insert(id, PeerSerde { ip, uuid, pk });
85
         self.db.insert(id, PeerSerde { ip, uuid, pk });
85
     }
86
     }
@@ -192,13 +193,21 @@ impl RendezvousServer {
192
                     }
193
                     }
193
                 }
194
                 }
194
                 Some(rendezvous_message::Union::register_pk(rk)) => {
195
                 Some(rendezvous_message::Union::register_pk(rk)) => {
196
+                    if rk.uuid.is_empty() {
197
+                        return Ok(());
198
+                    }
195
                     let id = rk.id;
199
                     let id = rk.id;
196
                     let mut res = register_pk_response::Result::OK;
200
                     let mut res = register_pk_response::Result::OK;
197
                     if let Some(peer) = self.pm.get(&id).await {
201
                     if let Some(peer) = self.pm.get(&id).await {
198
-                        if peer.uuid != rk.uuid {
199
-                            log::warn!("Peer {} pk mismatch: {:?} vs {:?}", id, rk.uuid, peer.uuid);
202
+                        if !peer.uuid.is_empty() && peer.uuid != rk.uuid {
203
+                            log::warn!(
204
+                                "Peer {} uuid mismatch: {:?} vs {:?}",
205
+                                id,
206
+                                rk.uuid,
207
+                                peer.uuid
208
+                            );
200
                             res = register_pk_response::Result::UUID_MISMATCH;
209
                             res = register_pk_response::Result::UUID_MISMATCH;
201
-                        } else if peer.pk != rk.pk {
210
+                        } else if peer.uuid.is_empty() || peer.pk != rk.pk {
202
                             self.pm.update_pk(id, addr, rk.uuid, rk.pk);
211
                             self.pm.update_pk(id, addr, rk.uuid, rk.pk);
203
                         }
212
                         }
204
                     } else {
213
                     } else {