This commit is contained in:
open-trade
2020-09-08 17:16:11 +08:00
parent 2ee99e6140
commit 1114d5d917

View File

@@ -23,7 +23,7 @@ use std::{
time::Instant, time::Instant,
}; };
#[derive(Clone)] #[derive(Clone, Debug)]
struct Peer { struct Peer {
socket_addr: SocketAddr, socket_addr: SocketAddr,
last_reg_time: Instant, last_reg_time: Instant,
@@ -80,6 +80,7 @@ impl PeerMap {
pk: pk.clone(), pk: pk.clone(),
}, },
); );
drop(lock);
let ip = socket_addr.ip().to_string(); let ip = socket_addr.ip().to_string();
self.db.insert(id, PeerSerde { ip, uuid, pk }); self.db.insert(id, PeerSerde { ip, uuid, pk });
} }
@@ -192,13 +193,21 @@ impl RendezvousServer {
} }
} }
Some(rendezvous_message::Union::register_pk(rk)) => { Some(rendezvous_message::Union::register_pk(rk)) => {
if rk.uuid.is_empty() {
return Ok(());
}
let id = rk.id; let id = rk.id;
let mut res = register_pk_response::Result::OK; let mut res = register_pk_response::Result::OK;
if let Some(peer) = self.pm.get(&id).await { if let Some(peer) = self.pm.get(&id).await {
if peer.uuid != rk.uuid { if !peer.uuid.is_empty() && peer.uuid != rk.uuid {
log::warn!("Peer {} pk mismatch: {:?} vs {:?}", id, rk.uuid, peer.uuid); log::warn!(
"Peer {} uuid mismatch: {:?} vs {:?}",
id,
rk.uuid,
peer.uuid
);
res = register_pk_response::Result::UUID_MISMATCH; res = register_pk_response::Result::UUID_MISMATCH;
} else if peer.pk != rk.pk { } else if peer.uuid.is_empty() || peer.pk != rk.pk {
self.pm.update_pk(id, addr, rk.uuid, rk.pk); self.pm.update_pk(id, addr, rk.uuid, rk.pk);
} }
} else { } else {