From 68cf0f1981ef94ecd94a0f9c657aa132165f7ed0 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 28 Jan 2020 14:55:26 -0500 Subject: Show route on failure to send dht key. --- dht/ToxManager.hs | 9 ++++++--- 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 import qualified Network.Tox.Onion.Handlers as Tox import qualified Network.Tox.Onion.Transport as Tox ;import Network.Tox.Onion.Transport (OnionData (..)) -import Network.Tox.Onion.Routes (tcpKademliaClient,tcpBucketRefresher,tcpRelayPinger) +import Network.Tox.Onion.Routes (tcpKademliaClient,tcpBucketRefresher,tcpRelayPinger,resolveRouteFromNodeId,showRoute) import Network.Tox.RelayPinger import qualified Network.Tox.TCP as TCP import Presence @@ -663,10 +663,13 @@ startConnecting0 tx them contact reason = do ] sendMessage tr route (mypub,Tox.OnionDHTPublicKey dkey) `catchIOError` \e -> do + let or = toxOnionRoutes $ txTox tx + nid = nodeId $ Tox.rendezvousNode $ Tox.rendezvous route + (rid,r)<- resolveRouteFromNodeId or nid dput XMan $ unlines - [ "Error sharing DHTKey to " ++ show route + $ [ "Error sharing DHTKey via " ++ show rid ++ " to " ++ show route , " " ++ show e - ] + ] ++ maybe [] (showRoute " ") r forM_ soliciting $ \cksum@(NoSpam nospam _)-> do dput XMan $ unwords [ take 8 (show $ key2id theirkey) , 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 mb <- atomically $ readArray (routeMap or) rid return $ storedRoute <$> mb +resolveRouteFromNodeId :: OnionRouter -> NodeId -> IO (RouteId,Maybe OnionRoute) +resolveRouteFromNodeId or nid = do + let RouteId rid = routeId nid + mb <- atomically $ fmap storedRoute <$> readArray (routeMap or) rid + return (RouteId rid,mb) + +showRoute :: String -> OnionRoute -> [String] +showRoute prefix r = + [ prefix ++ maybe (show $ routeNodeA r) (show . TCP.NodeInfo (routeNodeA r)) (routeRelayPort r) + , prefix ++ show (routeNodeB r) + , prefix ++ show (routeNodeC r) + ] + lookupTimeout :: OnionRouter -> OnionDestination r -> STM (OnionDestination RouteId, Int) lookupTimeout or (OnionDestination asel ni Nothing) = do let RouteId rid = routeId (nodeId ni) -- cgit v1.2.3