diff options
author | Joe Crayne <joe@jerkface.net> | 2020-01-03 18:22:16 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-07 13:24:59 -0500 |
commit | 15ab3290ad04280764968ba4760474a8c0cbfa52 (patch) | |
tree | 8df7bdfe38005f5478243427bb2b692d32843283 /dht/src/Network/Tox/TCP.hs | |
parent | b411ab66ceee7386e4829e2337c735a08fb3d54d (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.hs | 8 |
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 | ||
223 | getUDPNodes :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (Maybe ([UDP.NodeInfo], [UDP.NodeInfo], Maybe ())) | 223 | getUDPNodes :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (Maybe ([UDP.NodeInfo], [UDP.NodeInfo], Maybe ())) |
224 | getUDPNodes tcp seeking dst = fmap fst <$> getUDPNodes' tcp seeking dst | 224 | getUDPNodes tcp seeking dst = fmap fst . resultToMaybe <$> getUDPNodes' tcp seeking dst |
225 | 225 | ||
226 | getUDPNodes' :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (Maybe (([UDP.NodeInfo], [UDP.NodeInfo], Maybe ()), NodeInfo)) | 226 | getUDPNodes' :: TCPClient err Nonce8 -> NodeId -> UDP.NodeInfo -> IO (QR.Result (([UDP.NodeInfo], [UDP.NodeInfo], Maybe ()), NodeInfo)) |
227 | getUDPNodes' tcp seeking dst0 = do | 227 | getUDPNodes' 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) |