@@ -58,8 +58,8 @@ use libp2p::{
58
58
self ,
59
59
store:: { MemoryStore , RecordStore } ,
60
60
} ,
61
- GetClosestPeersError , Kademlia , KademliaBucketInserts , KademliaConfig , KademliaEvent ,
62
- QueryId , QueryResult , Quorum , Record ,
61
+ GetClosestPeersError , GetRecordOk , Kademlia , KademliaBucketInserts , KademliaConfig ,
62
+ KademliaEvent , QueryId , QueryResult , Quorum , Record ,
63
63
} ,
64
64
mdns:: { async_io:: Behaviour as Mdns , Config as MdnsConfig , Event as MdnsEvent } ,
65
65
multiaddr:: Protocol ,
@@ -366,7 +366,7 @@ impl DiscoveryBehaviour {
366
366
/// A corresponding `ValueFound` or `ValueNotFound` event will later be generated.
367
367
pub fn get_value ( & mut self , key : record:: Key ) {
368
368
if let Some ( k) = self . kademlia . as_mut ( ) {
369
- k. get_record ( key. clone ( ) , Quorum :: One ) ;
369
+ k. get_record ( key. clone ( ) ) ;
370
370
}
371
371
}
372
372
@@ -642,6 +642,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
642
642
}
643
643
}
644
644
645
+ let records = Vec :: new ( ) ;
645
646
while let Poll :: Ready ( ev) = self . kademlia . poll ( cx, params) {
646
647
match ev {
647
648
NetworkBehaviourAction :: GenerateEvent ( ev) => match ev {
@@ -661,7 +662,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
661
662
KademliaEvent :: InboundRequest { .. } => {
662
663
// We are not interested in this event at the moment.
663
664
} ,
664
- KademliaEvent :: OutboundQueryCompleted {
665
+ KademliaEvent :: OutboundQueryProgressed {
665
666
result : QueryResult :: GetClosestPeers ( res) ,
666
667
..
667
668
} => match res {
@@ -686,24 +687,28 @@ impl NetworkBehaviour for DiscoveryBehaviour {
686
687
}
687
688
} ,
688
689
} ,
689
- KademliaEvent :: OutboundQueryCompleted {
690
+ KademliaEvent :: OutboundQueryProgressed {
690
691
result : QueryResult :: GetRecord ( res) ,
691
692
stats,
693
+ step,
692
694
..
693
695
} => {
694
696
let ev = match res {
695
- Ok ( ok) => {
696
- let results = ok
697
- . records
698
- . into_iter ( )
699
- . map ( |r| ( r. record . key , r. record . value ) )
700
- . collect ( ) ;
701
-
702
- DiscoveryOut :: ValueFound (
703
- results,
704
- stats. duration ( ) . unwrap_or_default ( ) ,
705
- )
706
- } ,
697
+ Ok ( ok) =>
698
+ if let GetRecordOk :: FoundRecord ( r) = ok {
699
+ DiscoveryOut :: ValueFound (
700
+ vec ! [ ( r. record. key, r. record. value) ] ,
701
+ stats. duration ( ) . unwrap_or_default ( ) ,
702
+ )
703
+ } else {
704
+ debug ! (
705
+ target: "sub-libp2p" ,
706
+ "Libp2p => Query progressed to {:?} step (last: {:?})" ,
707
+ step. count,
708
+ step. last,
709
+ ) ;
710
+ continue
711
+ } ,
707
712
Err ( e @ libp2p:: kad:: GetRecordError :: NotFound { .. } ) => {
708
713
trace ! (
709
714
target: "sub-libp2p" ,
@@ -729,7 +734,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
729
734
} ;
730
735
return Poll :: Ready ( NetworkBehaviourAction :: GenerateEvent ( ev) )
731
736
} ,
732
- KademliaEvent :: OutboundQueryCompleted {
737
+ KademliaEvent :: OutboundQueryProgressed {
733
738
result : QueryResult :: PutRecord ( res) ,
734
739
stats,
735
740
..
@@ -751,7 +756,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
751
756
} ;
752
757
return Poll :: Ready ( NetworkBehaviourAction :: GenerateEvent ( ev) )
753
758
} ,
754
- KademliaEvent :: OutboundQueryCompleted {
759
+ KademliaEvent :: OutboundQueryProgressed {
755
760
result : QueryResult :: RepublishRecord ( res) ,
756
761
..
757
762
} => match res {
@@ -767,7 +772,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
767
772
) ,
768
773
} ,
769
774
// We never start any other type of query.
770
- KademliaEvent :: OutboundQueryCompleted { result : e, .. } => {
775
+ KademliaEvent :: OutboundQueryProgressed { result : e, .. } => {
771
776
warn ! ( target: "sub-libp2p" , "Libp2p => Unhandled Kademlia event: {:?}" , e)
772
777
} ,
773
778
} ,
0 commit comments