From 2590178387d6f5334b35290229d91224c9af3324 Mon Sep 17 00:00:00 2001 From: joe Date: Thu, 27 Jul 2017 22:23:25 -0400 Subject: Limit routing buckets to 24. --- src/Network/DHT/Routing.hs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/Network/DHT/Routing.hs') diff --git a/src/Network/DHT/Routing.hs b/src/Network/DHT/Routing.hs index 0391c116..85525a90 100644 --- a/src/Network/DHT/Routing.hs +++ b/src/Network/DHT/Routing.hs @@ -388,6 +388,9 @@ split testNodeIdBit i b = (Bucket ns qs, Bucket ms rs) defaultBucketCount :: Int defaultBucketCount = 20 +defaultMaxBucketCount :: Word +defaultMaxBucketCount = 24 + data Info ni nid = Info { myBuckets :: BucketList ni , myNodeId :: nid @@ -678,8 +681,14 @@ modifyBucket space nid f (BucketList self bkts) | kademliaTestBit space d i = second (: buckets) <$> f bucket | otherwise = second (bucket :) <$> go (succ i) buckets - go !i [bucket] = second (: []) <$> f bucket - <|> go i (splitTip (kademliaTestBit space . kademliaLocation space) self i bucket) + go !i [bucket] = second (: []) <$> f bucket <|> gosplit + where + gosplit | i < defaultMaxBucketCount = go i (splitTip ( kademliaTestBit space + . kademliaLocation space ) + self + i + bucket) + | otherwise = Nothing -- Limit the number of buckets. bktCount :: BucketList ni -> Int -- cgit v1.2.3