summaryrefslogtreecommitdiff
path: root/dht/src/Network/Tox/DHT/Transport.hs
diff options
context:
space:
mode:
Diffstat (limited to 'dht/src/Network/Tox/DHT/Transport.hs')
-rw-r--r--dht/src/Network/Tox/DHT/Transport.hs13
1 files changed, 7 insertions, 6 deletions
diff --git a/dht/src/Network/Tox/DHT/Transport.hs b/dht/src/Network/Tox/DHT/Transport.hs
index ed755880..5de92916 100644
--- a/dht/src/Network/Tox/DHT/Transport.hs
+++ b/dht/src/Network/Tox/DHT/Transport.hs
@@ -59,6 +59,8 @@ import Data.Tuple
59import Data.Word 59import Data.Word
60import GHC.Generics 60import GHC.Generics
61import Network.Socket 61import Network.Socket
62import DPut
63import DebugTag
62 64
63type DHTTransport ni = Transport String ni (DHTMessage Encrypted8) 65type DHTTransport ni = Transport String ni (DHTMessage Encrypted8)
64type HandleHi ni a = Arrival String ni (DHTMessage Encrypted8) -> IO a 66type HandleHi ni a = Arrival String ni (DHTMessage Encrypted8) -> IO a
@@ -97,8 +99,8 @@ mapMessage f (DHTLanDiscovery nid) = Nothing
97instance Sized Ping where size = ConstSize 1 99instance Sized Ping where size = ConstSize 1
98instance Sized Pong where size = ConstSize 1 100instance Sized Pong where size = ConstSize 1
99 101
100parseDHTAddr :: Eq saddr => 102parseDHTAddr :: (Eq saddr, Show ni) =>
101 STM [(saddr, (Int, PublicKey))] 103 (saddr -> STM (Maybe ni))
102 -> (NodeId -> saddr -> Either String ni) 104 -> (NodeId -> saddr -> Either String ni)
103 -> (ByteString, saddr) 105 -> (ByteString, saddr)
104 -> IO (Either (DHTMessage Encrypted8,ni) (ByteString,saddr)) 106 -> IO (Either (DHTMessage Encrypted8,ni) (ByteString,saddr))
@@ -113,10 +115,9 @@ parseDHTAddr pendingCookies nodeInfo (msg,saddr)
113 0x04 -> left $ direct nodeInfo bs saddr DHTSendNodes 115 0x04 -> left $ direct nodeInfo bs saddr DHTSendNodes
114 0x18 -> left $ direct nodeInfo bs saddr DHTCookieRequest 116 0x18 -> left $ direct nodeInfo bs saddr DHTCookieRequest
115 0x19 -> do 117 0x19 -> do
116 cs <- atomically pendingCookies 118 mni <- atomically $ pendingCookies saddr
117 let ni = fromMaybe (noReplyAddr nodeInfo saddr) $ do 119 let ni = fromMaybe (noReplyAddr nodeInfo saddr) mni
118 (cnt,key) <- lookup saddr cs <|> listToMaybe (map snd cs) 120 dput XMan $ "Got encrypted cookie! mni="++show mni
119 either (const Nothing) Just $ nodeInfo (key2id key) saddr
120 left $ fanGet bs getCookie (uncurry DHTCookie) (const $ ni) 121 left $ fanGet bs getCookie (uncurry DHTCookie) (const $ ni)
121 0x20 -> left $ fanGet bs getDHTReqest (uncurry DHTDHTRequest) (asymNodeInfo nodeInfo saddr . snd) 122 0x20 -> left $ fanGet bs getDHTReqest (uncurry DHTDHTRequest) (asymNodeInfo nodeInfo saddr . snd)
122 0x21 -> left $ do 123 0x21 -> left $ do