[libp2p-kad] Scope pending RPCs to queries. (#1217)

* Remove pending RPCs on query completion.

Ensure that any still pending RPCs related to a query are removed
once the query terminates (successfully or through timeout) by
scoping pending RPCs to the lifetime of a query.

* Cleanup.
This commit is contained in:
Roman Borschel
2019-08-07 09:27:50 +02:00
committed by Pierre Krieger
parent bcfb647e65
commit 5696b3eb4d
2 changed files with 19 additions and 14 deletions

View File

@ -188,6 +188,7 @@ fn query_iter() {
Async::Ready(Some(KademliaEvent::GetClosestPeersResult(Ok(ok)))) => {
assert_eq!(ok.key, search_target);
assert_eq!(swarm_ids[i], expected_swarm_id);
assert_eq!(swarm.queries.size(), 0);
assert!(expected_peer_ids.iter().all(|p| ok.peers.contains(p)));
let key = kbucket::Key::new(ok.key);
assert_eq!(expected_distances, distances(&key, ok.peers));
@ -420,6 +421,7 @@ fn put_record() {
if republished {
assert_eq!(swarms[0].store.records().count(), records.len());
assert_eq!(swarms[0].queries.size(), 0);
for k in records.keys() {
swarms[0].store.remove(&k);
}