|
|
@@ -321,6 +321,27 @@ impl RendezvousServer {
|
|
321
|
321
|
}
|
|
322
|
322
|
break;
|
|
323
|
323
|
}
|
|
|
324
|
+ Some(rendezvous_message::Union::register_pk(rk)) => {
|
|
|
325
|
+ if rk.uuid.is_empty() {
|
|
|
326
|
+ break;
|
|
|
327
|
+ }
|
|
|
328
|
+ let mut res = register_pk_response::Result::OK;
|
|
|
329
|
+ if let Some(peer) = rs.pm.get(&rk.id).await {
|
|
|
330
|
+ if peer.uuid != rk.uuid {
|
|
|
331
|
+ res = register_pk_response::Result::ID_EXISTS;
|
|
|
332
|
+ }
|
|
|
333
|
+ }
|
|
|
334
|
+ let mut msg_out = RendezvousMessage::new();
|
|
|
335
|
+ msg_out.set_register_pk_response(RegisterPkResponse {
|
|
|
336
|
+ result: res.into(),
|
|
|
337
|
+ ..Default::default()
|
|
|
338
|
+ });
|
|
|
339
|
+ if let Some(tcp) = sender.as_mut() {
|
|
|
340
|
+ if let Ok(bytes) = msg_out.write_to_bytes() {
|
|
|
341
|
+ allow_err!(tcp.send(Bytes::from(bytes)).await);
|
|
|
342
|
+ }
|
|
|
343
|
+ }
|
|
|
344
|
+ }
|
|
324
|
345
|
_ => {
|
|
325
|
346
|
break;
|
|
326
|
347
|
}
|
|
|
@@ -372,7 +393,7 @@ impl RendezvousServer {
|
|
372
|
393
|
let id = rk.id;
|
|
373
|
394
|
let mut res = register_pk_response::Result::OK;
|
|
374
|
395
|
if let Some(peer) = self.pm.get(&id).await {
|
|
375
|
|
- if !peer.uuid.is_empty() && peer.uuid != rk.uuid {
|
|
|
396
|
+ if peer.uuid != rk.uuid {
|
|
376
|
397
|
log::warn!(
|
|
377
|
398
|
"Peer {} uuid mismatch: {:?} vs {:?}",
|
|
378
|
399
|
id,
|
|
|
@@ -380,7 +401,7 @@ impl RendezvousServer {
|
|
380
|
401
|
peer.uuid
|
|
381
|
402
|
);
|
|
382
|
403
|
res = register_pk_response::Result::UUID_MISMATCH;
|
|
383
|
|
- } else if peer.uuid.is_empty() || peer.pk != rk.pk {
|
|
|
404
|
+ } else if peer.pk != rk.pk {
|
|
384
|
405
|
self.pm.update_pk(id, addr, rk.uuid, rk.pk);
|
|
385
|
406
|
}
|
|
386
|
407
|
} else {
|