diff options
author | Joe Crayne <joe@jerkface.net> | 2020-01-28 14:55:26 -0500 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2020-01-28 17:26:25 -0500 |
commit | 68cf0f1981ef94ecd94a0f9c657aa132165f7ed0 (patch) | |
tree | 358dfb9274a01e66032e7a25b04b589ffb6c3eae | |
parent | 292ed2811da7e56b7246eed37b949b1c9132e6c3 (diff) |
Show route on failure to send dht key.
-rw-r--r-- | dht/ToxManager.hs | 9 | ||||
-rw-r--r-- | dht/src/Network/Tox/Onion/Routes.hs | 13 |
2 files changed, 19 insertions, 3 deletions
diff --git a/dht/ToxManager.hs b/dht/ToxManager.hs index 545dbd6c..c0717083 100644 --- a/dht/ToxManager.hs +++ b/dht/ToxManager.hs | |||
@@ -52,7 +52,7 @@ import Network.Tox.NodeId | |||
52 | import qualified Network.Tox.Onion.Handlers as Tox | 52 | import qualified Network.Tox.Onion.Handlers as Tox |
53 | import qualified Network.Tox.Onion.Transport as Tox | 53 | import qualified Network.Tox.Onion.Transport as Tox |
54 | ;import Network.Tox.Onion.Transport (OnionData (..)) | 54 | ;import Network.Tox.Onion.Transport (OnionData (..)) |
55 | import Network.Tox.Onion.Routes (tcpKademliaClient,tcpBucketRefresher,tcpRelayPinger) | 55 | import Network.Tox.Onion.Routes (tcpKademliaClient,tcpBucketRefresher,tcpRelayPinger,resolveRouteFromNodeId,showRoute) |
56 | import Network.Tox.RelayPinger | 56 | import Network.Tox.RelayPinger |
57 | import qualified Network.Tox.TCP as TCP | 57 | import qualified Network.Tox.TCP as TCP |
58 | import Presence | 58 | import Presence |
@@ -663,10 +663,13 @@ startConnecting0 tx them contact reason = do | |||
663 | ] | 663 | ] |
664 | sendMessage tr route (mypub,Tox.OnionDHTPublicKey dkey) | 664 | sendMessage tr route (mypub,Tox.OnionDHTPublicKey dkey) |
665 | `catchIOError` \e -> do | 665 | `catchIOError` \e -> do |
666 | let or = toxOnionRoutes $ txTox tx | ||
667 | nid = nodeId $ Tox.rendezvousNode $ Tox.rendezvous route | ||
668 | (rid,r)<- resolveRouteFromNodeId or nid | ||
666 | dput XMan $ unlines | 669 | dput XMan $ unlines |
667 | [ "Error sharing DHTKey to " ++ show route | 670 | $ [ "Error sharing DHTKey via " ++ show rid ++ " to " ++ show route |
668 | , " " ++ show e | 671 | , " " ++ show e |
669 | ] | 672 | ] ++ maybe [] (showRoute " ") r |
670 | forM_ soliciting $ \cksum@(NoSpam nospam _)-> do | 673 | forM_ soliciting $ \cksum@(NoSpam nospam _)-> do |
671 | dput XMan $ unwords [ take 8 (show $ key2id theirkey) | 674 | dput XMan $ unwords [ take 8 (show $ key2id theirkey) |
672 | , show (nodeAddr $ Tox.rendezvousNode rendezvous) | 675 | , show (nodeAddr $ Tox.rendezvousNode rendezvous) |
diff --git a/dht/src/Network/Tox/Onion/Routes.hs b/dht/src/Network/Tox/Onion/Routes.hs index 93e9bfcd..987a56c2 100644 --- a/dht/src/Network/Tox/Onion/Routes.hs +++ b/dht/src/Network/Tox/Onion/Routes.hs | |||
@@ -566,6 +566,19 @@ lookupRoute or ni (RouteId rid) = do | |||
566 | mb <- atomically $ readArray (routeMap or) rid | 566 | mb <- atomically $ readArray (routeMap or) rid |
567 | return $ storedRoute <$> mb | 567 | return $ storedRoute <$> mb |
568 | 568 | ||
569 | resolveRouteFromNodeId :: OnionRouter -> NodeId -> IO (RouteId,Maybe OnionRoute) | ||
570 | resolveRouteFromNodeId or nid = do | ||
571 | let RouteId rid = routeId nid | ||
572 | mb <- atomically $ fmap storedRoute <$> readArray (routeMap or) rid | ||
573 | return (RouteId rid,mb) | ||
574 | |||
575 | showRoute :: String -> OnionRoute -> [String] | ||
576 | showRoute prefix r = | ||
577 | [ prefix ++ maybe (show $ routeNodeA r) (show . TCP.NodeInfo (routeNodeA r)) (routeRelayPort r) | ||
578 | , prefix ++ show (routeNodeB r) | ||
579 | , prefix ++ show (routeNodeC r) | ||
580 | ] | ||
581 | |||
569 | lookupTimeout :: OnionRouter -> OnionDestination r -> STM (OnionDestination RouteId, Int) | 582 | lookupTimeout :: OnionRouter -> OnionDestination r -> STM (OnionDestination RouteId, Int) |
570 | lookupTimeout or (OnionDestination asel ni Nothing) = do | 583 | lookupTimeout or (OnionDestination asel ni Nothing) = do |
571 | let RouteId rid = routeId (nodeId ni) | 584 | let RouteId rid = routeId (nodeId ni) |