@@ -422,10 +422,7 @@ impl Kademlia {
422
422
tracing:: trace!( target: LOG_TARGET , ?peer, query = ?query_id, "handle message from peer" ) ;
423
423
424
424
match KademliaMessage :: from_bytes ( message) . ok_or ( Error :: InvalidData ) ? {
425
- ref message @ KademliaMessage :: FindNode {
426
- ref target,
427
- ref peers,
428
- } => {
425
+ KademliaMessage :: FindNode { target, peers } => {
429
426
match query_id {
430
427
Some ( query_id) => {
431
428
tracing:: trace!(
@@ -437,8 +434,12 @@ impl Kademlia {
437
434
) ;
438
435
439
436
// update routing table and inform user about the update
440
- self . update_routing_table ( peers) . await ;
441
- self . engine . register_response ( query_id, peer, message. clone ( ) ) ;
437
+ self . update_routing_table ( & peers) . await ;
438
+ self . engine . register_response (
439
+ query_id,
440
+ peer,
441
+ KademliaMessage :: FindNode { target, peers } ,
442
+ ) ;
442
443
}
443
444
None => {
444
445
tracing:: trace!(
@@ -449,9 +450,9 @@ impl Kademlia {
449
450
) ;
450
451
451
452
let message = KademliaMessage :: find_node_response (
452
- target,
453
+ & target,
453
454
self . routing_table
454
- . closest ( Key :: from ( target. clone ( ) ) , self . replication_factor ) ,
455
+ . closest ( & Key :: new ( target. as_ref ( ) ) , self . replication_factor ) ,
455
456
) ;
456
457
self . executor . send_message ( peer, message. into ( ) , substream) ;
457
458
}
@@ -471,13 +472,9 @@ impl Kademlia {
471
472
472
473
let _ = self . event_tx . send ( KademliaEvent :: IncomingRecord { record } ) . await ;
473
474
}
474
- ref message @ KademliaMessage :: GetRecord {
475
- ref key,
476
- ref record,
477
- ref peers,
478
- } => {
475
+ KademliaMessage :: GetRecord { key, record, peers } => {
479
476
match ( query_id, key) {
480
- ( Some ( query_id) , _ ) => {
477
+ ( Some ( query_id) , key ) => {
481
478
tracing:: trace!(
482
479
target: LOG_TARGET ,
483
480
?peer,
@@ -488,8 +485,12 @@ impl Kademlia {
488
485
) ;
489
486
490
487
// update routing table and inform user about the update
491
- self . update_routing_table ( peers) . await ;
492
- self . engine . register_response ( query_id, peer, message. clone ( ) ) ;
488
+ self . update_routing_table ( & peers) . await ;
489
+ self . engine . register_response (
490
+ query_id,
491
+ peer,
492
+ KademliaMessage :: GetRecord { key, record, peers } ,
493
+ ) ;
493
494
}
494
495
( None , Some ( key) ) => {
495
496
tracing:: trace!(
@@ -499,22 +500,20 @@ impl Kademlia {
499
500
"handle `GET_VALUE` request" ,
500
501
) ;
501
502
502
- let value = self . store . get ( key) . cloned ( ) ;
503
+ let value = self . store . get ( & key) . cloned ( ) ;
503
504
let closest_peers = self
504
505
. routing_table
505
- . closest ( Key :: from ( key. to_vec ( ) ) , self . replication_factor ) ;
506
+ . closest ( & Key :: new ( key. as_ref ( ) ) , self . replication_factor ) ;
506
507
507
- let message = KademliaMessage :: get_value_response (
508
- ( * key) . clone ( ) ,
509
- closest_peers,
510
- value,
511
- ) ;
508
+ let message =
509
+ KademliaMessage :: get_value_response ( key, closest_peers, value) ;
512
510
self . executor . send_message ( peer, message. into ( ) , substream) ;
513
511
}
514
512
( None , None ) => tracing:: debug!(
515
513
target: LOG_TARGET ,
516
514
?peer,
517
- ?message,
515
+ ?record,
516
+ ?peers,
518
517
"unable to handle `GET_RECORD` request with empty key" ,
519
518
) ,
520
519
}
@@ -567,10 +566,10 @@ impl Kademlia {
567
566
}
568
567
}
569
568
}
570
- ref message @ KademliaMessage :: GetProviders {
571
- ref key,
572
- ref peers,
573
- ref providers,
569
+ KademliaMessage :: GetProviders {
570
+ key,
571
+ peers,
572
+ providers,
574
573
} => {
575
574
match ( query_id, key) {
576
575
( Some ( query_id) , key) => {
@@ -586,9 +585,17 @@ impl Kademlia {
586
585
) ;
587
586
588
587
// update routing table and inform user about the update
589
- self . update_routing_table ( peers) . await ;
588
+ self . update_routing_table ( & peers) . await ;
590
589
591
- self . engine . register_response ( query_id, peer, message. clone ( ) ) ;
590
+ self . engine . register_response (
591
+ query_id,
592
+ peer,
593
+ KademliaMessage :: GetProviders {
594
+ key,
595
+ peers,
596
+ providers,
597
+ } ,
598
+ ) ;
592
599
}
593
600
( None , Some ( key) ) => {
594
601
tracing:: trace!(
@@ -598,7 +605,7 @@ impl Kademlia {
598
605
"handle `GET_PROVIDERS` request" ,
599
606
) ;
600
607
601
- let mut providers = self . store . get_providers ( key) ;
608
+ let mut providers = self . store . get_providers ( & key) ;
602
609
603
610
// Make sure local provider addresses are up to date.
604
611
let local_peer_id = self . local_key . clone ( ) . into_preimage ( ) ;
@@ -608,7 +615,7 @@ impl Kademlia {
608
615
609
616
let closer_peers = self
610
617
. routing_table
611
- . closest ( Key :: from ( key. to_vec ( ) ) , self . replication_factor ) ;
618
+ . closest ( & Key :: new ( key. as_ref ( ) ) , self . replication_factor ) ;
612
619
613
620
let message =
614
621
KademliaMessage :: get_providers_response ( providers, & closer_peers) ;
@@ -617,7 +624,8 @@ impl Kademlia {
617
624
( None , None ) => tracing:: debug!(
618
625
target: LOG_TARGET ,
619
626
?peer,
620
- ?message,
627
+ ?peers,
628
+ ?providers,
621
629
"unable to handle `GET_PROVIDERS` request with empty key" ,
622
630
) ,
623
631
}
@@ -977,7 +985,7 @@ impl Kademlia {
977
985
query_id,
978
986
peer,
979
987
self . routing_table
980
- . closest( Key :: from( peer) , self . replication_factor)
988
+ . closest( & Key :: from( peer) , self . replication_factor)
981
989
. into( )
982
990
) ;
983
991
}
@@ -1005,7 +1013,7 @@ impl Kademlia {
1005
1013
self . engine. start_put_record(
1006
1014
query_id,
1007
1015
record,
1008
- self . routing_table. closest( key, self . replication_factor) . into( ) ,
1016
+ self . routing_table. closest( & key, self . replication_factor) . into( ) ,
1009
1017
) ;
1010
1018
}
1011
1019
Some ( KademliaCommand :: PutRecordToPeers {
@@ -1074,7 +1082,7 @@ impl Kademlia {
1074
1082
key. clone( ) ,
1075
1083
provider,
1076
1084
self . routing_table
1077
- . closest( Key :: new( key) , self . replication_factor)
1085
+ . closest( & Key :: new( key) , self . replication_factor)
1078
1086
. into( ) ,
1079
1087
) ;
1080
1088
}
@@ -1107,7 +1115,7 @@ impl Kademlia {
1107
1115
query_id,
1108
1116
key. clone( ) ,
1109
1117
self . routing_table
1110
- . closest( Key :: new( key) , self . replication_factor)
1118
+ . closest( & Key :: new( key) , self . replication_factor)
1111
1119
. into( ) ,
1112
1120
quorum,
1113
1121
if record. is_some( ) { 1 } else { 0 } ,
@@ -1125,7 +1133,7 @@ impl Kademlia {
1125
1133
query_id,
1126
1134
key. clone( ) ,
1127
1135
self . routing_table
1128
- . closest( Key :: new( key) , self . replication_factor)
1136
+ . closest( & Key :: new( key) , self . replication_factor)
1129
1137
. into( ) ,
1130
1138
known_providers,
1131
1139
) ;
@@ -1185,7 +1193,7 @@ impl Kademlia {
1185
1193
provided_key. clone( ) ,
1186
1194
provider,
1187
1195
self . routing_table
1188
- . closest( Key :: new( provided_key) , self . replication_factor)
1196
+ . closest( & Key :: new( provided_key) , self . replication_factor)
1189
1197
. into( ) ,
1190
1198
) ;
1191
1199
}
0 commit comments