From 938ef8b447e975a39121104b4206cd149a2f911e Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Fri, 17 Jan 2020 18:07:41 -0500 Subject: Improved debug prints. --- dht/src/Data/Tox/DHT/Multi.hs | 2 +- dht/src/Network/Tox.hs | 2 ++ dht/src/Network/Tox/Session.hs | 17 +++++++++-------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dht/src/Data/Tox/DHT/Multi.hs b/dht/src/Data/Tox/DHT/Multi.hs index 878b47e6..4067ab46 100644 --- a/dht/src/Data/Tox/DHT/Multi.hs +++ b/dht/src/Data/Tox/DHT/Multi.hs @@ -149,4 +149,4 @@ showSessionAddr :: SessionAddress -> String showSessionAddr (SessionUDP :=> Identity udp) = show (SockAddr.canonize udp) showSessionAddr (SessionTCP :=> Identity (ViaRelay mcon _ tcp)) = - "TCP:" ++ maybe "" (\(ConId con) -> "(" ++ show con ++ ")") mcon ++ show tcp + "TCP:" ++ maybe "(oob)" (\(ConId con) -> "(" ++ show con ++ ")") mcon ++ show tcp diff --git a/dht/src/Network/Tox.hs b/dht/src/Network/Tox.hs index 084a9978..0a6cccaa 100644 --- a/dht/src/Network/Tox.hs +++ b/dht/src/Network/Tox.hs @@ -357,6 +357,8 @@ newToxOverTransport keydb addr onNewSession (crypto,roster) udp tcp = do Multi.SessionTCP :=> Identity (ViaRelay Nothing nid relay) -> do let relayclient = relayClient $ tcpRelayPinger orouter msaddr <- Multi.tcpConnectionRequest relayclient (id2key nid) relay + when (isNothing msaddr) $ + dput XMan $ "Unable to establish relay connection!" return $ maybe saddr Multi.sessionAddr msaddr _ -> return saddr sendMessage handshakes saddr' hs diff --git a/dht/src/Network/Tox/Session.hs b/dht/src/Network/Tox/Session.hs index cbb516a7..457ed1a0 100644 --- a/dht/src/Network/Tox/Session.hs +++ b/dht/src/Network/Tox/Session.hs @@ -136,14 +136,15 @@ plainHandshakeH sp saddr0 skey handshake = do (sessionKey hd) <$> atomically (newTVar $ baseNonce hd) <*> atomically (newTVar $ baseNonce hd_sent) - m <- newSession (spSessions sp) (\() p -> return p) (decryptPacket sk) saddr + let addr_lbl = Multi.showSessionAddr saddr + m <- newSession (spSessions sp) (\() p -> return p) (\_ -> decryptPacket sk addr_lbl) saddr dput XNetCrypto $ prelude ++ "plainHandshakeH: session " ++ maybe "Nothing" (const "Just") m forM_ m $ \(sid, t) -> do (t2,resend,getMissing) <- lossless (take 8 (showKey256 them) ++ "." ++ Multi.showSessionAddr saddr) (\cp a -> return $ fmap (,a) $ checkLossless $ runIdentity $ pktData cp) (\seqno p@(Pkt m :=> _) _ -> do - y <- encryptPacket sk $ bookKeeping seqno p + y <- encryptPacket sk addr_lbl $ bookKeeping seqno p return OutgoingInfo { oIsLossy = lossyness m == Lossy , oEncoded = y @@ -182,8 +183,8 @@ data SessionKeys = SessionKeys } -- | Decrypt an inbound session packet and update the nonce for the next one. -decryptPacket :: SessionKeys -> addr -> CryptoPacket Encrypted -> IO (Maybe (CryptoPacket Identity, ())) -decryptPacket sk saddr (CryptoPacket n16 ciphered) = do +decryptPacket :: SessionKeys -> String -> CryptoPacket Encrypted -> IO (Maybe (CryptoPacket Identity, ())) +decryptPacket sk lbl (CryptoPacket n16 ciphered) = do (n24,δ) <- atomically $ do n <- readTVar (skNonceIncoming sk) let δ = n16 - nonce24ToWord16 n @@ -198,13 +199,13 @@ decryptPacket sk saddr (CryptoPacket n16 ciphered) = do do let them = key2id $ skThem sk CryptoData ack seqno _ = x cm = decodeRawCryptoMsg x - dput XNetCrypto $ unwords [take 8 (show them),"-->",show (msgID cm),show (n24,ack,seqno)] + dput XNetCrypto $ unwords [lbl,"-->",show (msgID cm),show (n24,ack,seqno)] return $ Just ( CryptoPacket n16 (pure x), () ) -- | Encrypt an outbound session packet and update the nonce for the next one. -encryptPacket :: SessionKeys -> CryptoData -> IO (CryptoPacket Encrypted) -encryptPacket sk plain = do +encryptPacket :: SessionKeys -> String -> CryptoData -> IO (CryptoPacket Encrypted) +encryptPacket sk lbl plain = do n24 <- atomically $ do n24 <- readTVar (skNonceOutgoing sk) modifyTVar' (skNonceOutgoing sk) incrementNonce24 @@ -214,7 +215,7 @@ encryptPacket sk plain = do do let them = key2id $ skThem sk CryptoData ack seqno cm = plain - dput XNetCrypto $ unwords [take 8 (show them),"<--",show (msgID cm),show (n24,ack,seqno)] + dput XNetCrypto $ unwords [lbl,"<--",show (msgID cm),show (n24,ack,seqno)] return $ CryptoPacket (nonce24ToWord16 n24) ciphered -- cgit v1.2.3