summaryrefslogtreecommitdiff
path: root/dht/src/Network/Tox/Transport.hs
diff options
context:
space:
mode:
Diffstat (limited to 'dht/src/Network/Tox/Transport.hs')
-rw-r--r--dht/src/Network/Tox/Transport.hs16
1 files changed, 11 insertions, 5 deletions
diff --git a/dht/src/Network/Tox/Transport.hs b/dht/src/Network/Tox/Transport.hs
index b017f7be..e90917f6 100644
--- a/dht/src/Network/Tox/Transport.hs
+++ b/dht/src/Network/Tox/Transport.hs
@@ -18,18 +18,24 @@ import Network.Tox.Onion.Transport
18import Network.Tox.Crypto.Transport 18import Network.Tox.Crypto.Transport
19import Network.Tox.Onion.Routes 19import Network.Tox.Onion.Routes
20 20
21import Control.Applicative
21import Control.Concurrent.STM 22import Control.Concurrent.STM
22import qualified Data.ByteString as B 23import qualified Data.ByteString as B
23import qualified Data.Dependent.Map as DMap 24import qualified Data.Dependent.Map as DMap
24import Data.Dependent.Sum 25import Data.Dependent.Sum
25import Data.Functor.Identity 26import Data.Functor.Identity
27import Data.Maybe
26import Network.Socket 28import Network.Socket
27 29
28pendingCookiesUDP :: TransportCrypto -> STM [(SockAddr, (Int, PublicKey))] 30pendingCookiesUDP :: TransportCrypto -> SockAddr -> STM (Maybe UDP.NodeInfo)
29pendingCookiesUDP crypto = readTVar $ pendingCookies crypto 31pendingCookiesUDP crypto saddr = do
32 cs <- readTVar $ pendingCookies crypto
33 return $ do
34 (_,key) <- lookup saddr cs <|> listToMaybe (map snd cs)
35 either (const Nothing) Just $ nodeInfo (key2id key) saddr
30 36
31pendingCookiesTCP :: TransportCrypto -> STM [(ViaRelay, (Int, PublicKey))] 37pendingCookiesTCP :: ViaRelay -> STM (Maybe ViaRelay)
32pendingCookiesTCP crypto = return [] -- TODO 38pendingCookiesTCP ni = return $ Just ni
33 39
34toxTransport :: 40toxTransport ::
35 TransportCrypto 41 TransportCrypto
@@ -52,7 +58,7 @@ toxTransport crypto orouter closeLookup addr udp relaynet _ tcp2client = do
52 -- rlynet0 = layerTransportM (DHT.decrypt crypto Multi.relayNodeId) (DHT.encrypt crypto Multi.relayNodeId) relaynet 58 -- rlynet0 = layerTransportM (DHT.decrypt crypto Multi.relayNodeId) (DHT.encrypt crypto Multi.relayNodeId) relaynet
53 (netcryptoTCP, relaynet0) <- partitionTransport parseCrypto encodeCrypto relaynet 59 (netcryptoTCP, relaynet0) <- partitionTransport parseCrypto encodeCrypto relaynet
54 (dhtTCP,relaynet1) <- partitionTransportM 60 (dhtTCP,relaynet1) <- partitionTransportM
55 (parseDHTAddr (pendingCookiesTCP crypto) (\nid viarelay -> Right viarelay)) 61 (parseDHTAddr pendingCookiesTCP (\nid viarelay -> Right viarelay))
56 (fmap Just . encodeDHTAddr id) 62 (fmap Just . encodeDHTAddr id)
57 relaynet0 63 relaynet0
58 let _ = dhtTCP :: Transport String ViaRelay (DHTMessage Encrypted8) 64 let _ = dhtTCP :: Transport String ViaRelay (DHTMessage Encrypted8)