summaryrefslogtreecommitdiff
path: root/OnionRouter.hs
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2018-12-10 10:19:41 -0500
committerJoe Crayne <joe@jerkface.net>2018-12-16 14:08:26 -0500
commit790ec8072f856247c0566b263ee9901bd1cde638 (patch)
treea776d5588d3d639f6d99e8220e12fdaed642edf2 /OnionRouter.hs
parentc4c381a5e9295e14382404e88a98af27690c5ec9 (diff)
Update TCP kademlia table.
Diffstat (limited to 'OnionRouter.hs')
-rw-r--r--OnionRouter.hs10
1 files changed, 10 insertions, 0 deletions
diff --git a/OnionRouter.hs b/OnionRouter.hs
index 0e0b5afb..55ba9c28 100644
--- a/OnionRouter.hs
+++ b/OnionRouter.hs
@@ -191,6 +191,13 @@ newOnionRouter crypto perror = do
191 , trampolineIds = ti 191 , trampolineIds = ti
192 , trampolineCount = tc 192 , trampolineCount = tc
193 , tcpKademliaClient = tcp 193 , tcpKademliaClient = tcp
194 { TCP.tcpClient =
195 let c = TCP.tcpClient tcp
196 in c { clientNet = addHandler perror (handleMessage c)
197 $ onInbound (updateTCP refresher)
198 $ clientNet c
199 }
200 }
194 , tcpBucketRefresher = refresher 201 , tcpBucketRefresher = refresher
195 , routeLog = rlog 202 , routeLog = rlog
196 , routeThread = error "forkRouteBuilder not invoked (missing onion route builder thread)." 203 , routeThread = error "forkRouteBuilder not invoked (missing onion route builder thread)."
@@ -199,6 +206,9 @@ newOnionRouter crypto perror = do
199 } 206 }
200 return or 207 return or
201 208
209updateTCP :: BucketRefresher NodeId TCP.NodeInfo -> TCP.NodeInfo -> p -> IO ()
210updateTCP refresher addr x = insertNode (refreshKademlia refresher) addr
211
202selectGateway :: TVar (R.BucketList TCP.NodeInfo) -> NodeInfo -> STM (Maybe TCP.NodeInfo) 212selectGateway :: TVar (R.BucketList TCP.NodeInfo) -> NodeInfo -> STM (Maybe TCP.NodeInfo)
203selectGateway tbl ni = do 213selectGateway tbl ni = do
204 ns <- kclosest TCP.tcpSpace 2 (nodeId ni) <$> readTVar tbl 214 ns <- kclosest TCP.tcpSpace 2 (nodeId ni) <$> readTVar tbl