diff --git a/src/kademlia/routing/Contact.java b/src/kademlia/routing/Contact.java index ec4a411..896d1df 100644 --- a/src/kademlia/routing/Contact.java +++ b/src/kademlia/routing/Contact.java @@ -90,6 +90,14 @@ public class Contact implements Comparable return this.staleCount; } + /** + * Reset the stale count of the contact if it's recently seen + */ + public void resetStaleCount() + { + this.staleCount = 0; + } + @Override public int compareTo(Contact o) { diff --git a/src/kademlia/routing/KadBucketImpl.java b/src/kademlia/routing/KadBucketImpl.java index c6012e2..65c32c6 100644 --- a/src/kademlia/routing/KadBucketImpl.java +++ b/src/kademlia/routing/KadBucketImpl.java @@ -54,6 +54,7 @@ public class KadBucketImpl implements KadBucket */ Contact tmp = this.removeFromContacts(c.getNode()); tmp.setSeenNow(); + tmp.resetStaleCount(); this.contacts.add(tmp); } else @@ -125,6 +126,7 @@ public class KadBucketImpl implements KadBucket return false; } + /* Contact exist, lets remove it only if our replacement cache has a replacement */ if (!this.replacementCache.isEmpty()) { /* Replace the contact with one from the replacement cache */