summaryrefslogtreecommitdiff
path: root/dht/src/Network/Tox.hs
diff options
context:
space:
mode:
Diffstat (limited to 'dht/src/Network/Tox.hs')
-rw-r--r--dht/src/Network/Tox.hs12
1 files changed, 4 insertions, 8 deletions
diff --git a/dht/src/Network/Tox.hs b/dht/src/Network/Tox.hs
index fca0f9e0..f136ab96 100644
--- a/dht/src/Network/Tox.hs
+++ b/dht/src/Network/Tox.hs
@@ -72,7 +72,7 @@ import qualified Network.Tox.Onion.Transport as Onion
72import Network.Tox.RelayPinger 72import Network.Tox.RelayPinger
73import System.Global6 73import System.Global6
74import Network.Tox.Transport 74import Network.Tox.Transport
75import Network.Tox.TCP (tcpClient, RelayClient) 75import Network.Tox.TCP (tcpClient)
76import Network.Tox.Onion.Routes 76import Network.Tox.Onion.Routes
77import Network.Tox.ContactInfo 77import Network.Tox.ContactInfo
78import Text.XXD 78import Text.XXD
@@ -199,8 +199,8 @@ data Tox extra = Tox
199 199
200 200
201-- | Create a DHTPublicKey packet to send to a remote contact. 201-- | Create a DHTPublicKey packet to send to a remote contact.
202getContactInfo :: Maybe (RelayClient,PublicKey) -> Tox extra -> IO DHT.DHTPublicKey 202getContactInfo :: Tox extra -> IO DHT.DHTPublicKey
203getContactInfo mthem Tox{toxCryptoKeys,toxRouting,toxOnionRoutes} = join $ atomically $ do 203getContactInfo Tox{toxCryptoKeys,toxRouting,toxOnionRoutes} = join $ atomically $ do
204 (rcnt,relays) <- currentRelays (tcpRelayPinger toxOnionRoutes) 204 (rcnt,relays) <- currentRelays (tcpRelayPinger toxOnionRoutes)
205 r4 <- readTVar $ DHT.routing4 toxRouting 205 r4 <- readTVar $ DHT.routing4 toxRouting
206 r6 <- readTVar $ DHT.routing6 toxRouting 206 r6 <- readTVar $ DHT.routing6 toxRouting
@@ -212,16 +212,12 @@ getContactInfo mthem Tox{toxCryptoKeys,toxRouting,toxOnionRoutes} = join $ atomi
212 n6s = R.kclosest DHT.toxSpace 4 self r6 212 n6s = R.kclosest DHT.toxSpace 4 self r6
213 ns = filter (DHT.isGlobal . nodeIP) [n4,n6] 213 ns = filter (DHT.isGlobal . nodeIP) [n4,n6]
214 ++ concat (zipWith (\a b -> [a,b]) n4s n6s) 214 ++ concat (zipWith (\a b -> [a,b]) n4s n6s)
215 sending_ns = take 4 $ relays ++ map TCP.fromUDPNode ns
216 return $ do 215 return $ do
217 forM_ mthem $ \(tcp,them) ->
218 forM_ (filter (\n -> TCP.tcpPort n /= 0) sending_ns) $ \ni -> do
219 Multi.tcpConnectionRequest tcp them ni
220 timestamp <- round . (* 1000000) <$> getPOSIXTime 216 timestamp <- round . (* 1000000) <$> getPOSIXTime
221 return DHT.DHTPublicKey 217 return DHT.DHTPublicKey
222 { dhtpkNonce = timestamp 218 { dhtpkNonce = timestamp
223 , dhtpk = id2key self 219 , dhtpk = id2key self
224 , dhtpkNodes = DHT.SendNodes sending_ns 220 , dhtpkNodes = DHT.SendNodes $ take 4 $ relays ++ map TCP.fromUDPNode ns
225 } 221 }
226 222
227isLocalHost :: SockAddr -> Bool 223isLocalHost :: SockAddr -> Bool