open-trade лет назад: 5
Родитель
Сommit
1114d5d917
1 измененных файлов с 13 добавлено и 4 удалено
  1. 13 4
      src/rendezvous_server.rs

+ 13 - 4
src/rendezvous_server.rs

@@ -23,7 +23,7 @@ use std::{
23 23
     time::Instant,
24 24
 };
25 25
 
26
-#[derive(Clone)]
26
+#[derive(Clone, Debug)]
27 27
 struct Peer {
28 28
     socket_addr: SocketAddr,
29 29
     last_reg_time: Instant,
@@ -80,6 +80,7 @@ impl PeerMap {
80 80
                 pk: pk.clone(),
81 81
             },
82 82
         );
83
+        drop(lock);
83 84
         let ip = socket_addr.ip().to_string();
84 85
         self.db.insert(id, PeerSerde { ip, uuid, pk });
85 86
     }
@@ -192,13 +193,21 @@ impl RendezvousServer {
192 193
                     }
193 194
                 }
194 195
                 Some(rendezvous_message::Union::register_pk(rk)) => {
196
+                    if rk.uuid.is_empty() {
197
+                        return Ok(());
198
+                    }
195 199
                     let id = rk.id;
196 200
                     let mut res = register_pk_response::Result::OK;
197 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 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 211
                             self.pm.update_pk(id, addr, rk.uuid, rk.pk);
203 212
                         }
204 213
                     } else {