summaryrefslogtreecommitdiff
path: root/dht/src/Network/Tox/TCP.hs
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2020-01-03 18:22:16 -0500
committerJoe Crayne <joe@jerkface.net>2020-01-07 13:24:59 -0500
commit15ab3290ad04280764968ba4760474a8c0cbfa52 (patch)
tree8df7bdfe38005f5478243427bb2b692d32843283 /dht/src/Network/Tox/TCP.hs
parentb411ab66ceee7386e4829e2337c735a08fb3d54d (diff)
Modify kademlia search to distinguish a Canceled from timed-out query.
Diffstat (limited to 'dht/src/Network/Tox/TCP.hs')
-rw-r--r--dht/src/Network/Tox/TCP.hs8
1 files changed, 5 insertions, 3 deletions
diff --git a/dht/src/Network/Tox/TCP.hs b/dht/src/Network/Tox/TCP.hs
index 385da35b..932b4ab3 100644
--- a/dht/src/Network/Tox/TCP.hs
+++ b/dht/src/Network/Tox/TCP.hs
@@ -221,12 +221,14 @@ getTCPNodes tcp seeking dst = do
221-} 221-}
222 222
223getUDPNodes :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (Maybe ([UDP.NodeInfo], [UDP.NodeInfo], Maybe ())) 223getUDPNodes :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (Maybe ([UDP.NodeInfo], [UDP.NodeInfo], Maybe ()))
224getUDPNodes tcp seeking dst = fmap fst <$> getUDPNodes' tcp seeking dst 224getUDPNodes tcp seeking dst = fmap fst . resultToMaybe <$> getUDPNodes' tcp seeking dst
225 225
226getUDPNodes' :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (Maybe (([UDP.NodeInfo], [UDP.NodeInfo], Maybe ()), NodeInfo)) 226getUDPNodes' :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (QR.Result (([UDP.NodeInfo], [UDP.NodeInfo], Maybe ()), NodeInfo))
227getUDPNodes' tcp seeking dst0 = do 227getUDPNodes' tcp seeking dst0 = do
228 mgateway <- atomically $ tcpGetGateway tcp dst0 228 mgateway <- atomically $ tcpGetGateway tcp dst0
229 fmap (join . fmap resultToMaybe) $ forM mgateway $ \gateway -> do 229 case mgateway of
230 Nothing -> return Canceled
231 Just gateway -> do
230 (b,c,n24) <- atomically $ do 232 (b,c,n24) <- atomically $ do
231 b <- transportNewKey (tcpCrypto tcp) 233 b <- transportNewKey (tcpCrypto tcp)
232 c <- transportNewKey (tcpCrypto tcp) 234 c <- transportNewKey (tcpCrypto tcp)