summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Crayne <joe@jerkface.net>2020-01-28 14:55:26 -0500
committerJoe Crayne <joe@jerkface.net>2020-01-28 17:26:25 -0500
commit68cf0f1981ef94ecd94a0f9c657aa132165f7ed0 (patch)
tree358dfb9274a01e66032e7a25b04b589ffb6c3eae
parent292ed2811da7e56b7246eed37b949b1c9132e6c3 (diff)
Show route on failure to send dht key.
-rw-r--r--dht/ToxManager.hs9
-rw-r--r--dht/src/Network/Tox/Onion/Routes.hs13
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
52import qualified Network.Tox.Onion.Handlers as Tox 52import qualified Network.Tox.Onion.Handlers as Tox
53import qualified Network.Tox.Onion.Transport as Tox 53import qualified Network.Tox.Onion.Transport as Tox
54 ;import Network.Tox.Onion.Transport (OnionData (..)) 54 ;import Network.Tox.Onion.Transport (OnionData (..))
55import Network.Tox.Onion.Routes (tcpKademliaClient,tcpBucketRefresher,tcpRelayPinger) 55import Network.Tox.Onion.Routes (tcpKademliaClient,tcpBucketRefresher,tcpRelayPinger,resolveRouteFromNodeId,showRoute)
56import Network.Tox.RelayPinger 56import Network.Tox.RelayPinger
57import qualified Network.Tox.TCP as TCP 57import qualified Network.Tox.TCP as TCP
58import Presence 58import 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
569resolveRouteFromNodeId :: OnionRouter -> NodeId -> IO (RouteId,Maybe OnionRoute)
570resolveRouteFromNodeId or nid = do
571 let RouteId rid = routeId nid
572 mb <- atomically $ fmap storedRoute <$> readArray (routeMap or) rid
573 return (RouteId rid,mb)
574
575showRoute :: String -> OnionRoute -> [String]
576showRoute 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
569lookupTimeout :: OnionRouter -> OnionDestination r -> STM (OnionDestination RouteId, Int) 582lookupTimeout :: OnionRouter -> OnionDestination r -> STM (OnionDestination RouteId, Int)
570lookupTimeout or (OnionDestination asel ni Nothing) = do 583lookupTimeout or (OnionDestination asel ni Nothing) = do
571 let RouteId rid = routeId (nodeId ni) 584 let RouteId rid = routeId (nodeId ni)