From 43eb04dfea8a88f8764ee733234d403aff3c79c9 Mon Sep 17 00:00:00 2001 From: Trolli Schmittlauch Date: Tue, 26 May 2020 09:38:38 +0200 Subject: [PATCH] preliminary passing of bootstrap nodes in Main to fediChordJoin --- src/Hash2Pub/DHTProtocol.hs | 1 + src/Hash2Pub/FediChord.hs | 1 + src/Hash2Pub/FediChordTypes.hs | 7 ++++--- src/Hash2Pub/Main.hs | 4 +++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Hash2Pub/DHTProtocol.hs b/src/Hash2Pub/DHTProtocol.hs index 147fecc..588e846 100644 --- a/src/Hash2Pub/DHTProtocol.hs +++ b/src/Hash2Pub/DHTProtocol.hs @@ -334,4 +334,5 @@ mkSendSocket dest destPort = do destAddr <- addrAddress <$> resolve (Just dest) (Just destPort) sendSock <- socket AF_INET6 Datagram defaultProtocol setSocketOption sendSock IPv6Only 1 + connect sendSock destAddr pure sendSock diff --git a/src/Hash2Pub/FediChord.hs b/src/Hash2Pub/FediChord.hs index 540267c..c52e9f9 100644 --- a/src/Hash2Pub/FediChord.hs +++ b/src/Hash2Pub/FediChord.hs @@ -37,6 +37,7 @@ module Hash2Pub.FediChord ( , bsAsIpAddr , FediChordConf(..) , fediChordInit + , fediChordJoin , nodeStateInit , mkServerSocket , mkSendSocket diff --git a/src/Hash2Pub/FediChordTypes.hs b/src/Hash2Pub/FediChordTypes.hs index 7ad09a9..7e3565d 100644 --- a/src/Hash2Pub/FediChordTypes.hs +++ b/src/Hash2Pub/FediChordTypes.hs @@ -419,9 +419,10 @@ byteStringToUInteger bs = sum $ parsedBytes 0 bs -- | configuration values used for initialising the FediChord DHT data FediChordConf = FediChordConf - { confDomain :: String - , confIP :: HostAddress6 - , confDhtPort :: Int + { confDomain :: String + , confIP :: HostAddress6 + , confDhtPort :: Int + , confBootstrapNodes :: [(String, PortNumber)] } deriving (Show, Eq) diff --git a/src/Hash2Pub/Main.hs b/src/Hash2Pub/Main.hs index 1956f64..4435f73 100644 --- a/src/Hash2Pub/Main.hs +++ b/src/Hash2Pub/Main.hs @@ -18,15 +18,17 @@ main = do -- currently no masking is necessary, as there is nothing to clean up cacheWriterThread <- forkIO $ cacheWriter thisNode -- idea: list of bootstrapping nodes, try joining within a timeout + joinedState <- fediChordJoin thisNode $ head . confBootstrapNodes $ conf -- stop main thread from terminating during development getChar pure () readConfig :: IO FediChordConf readConfig = do - confDomainString : ipString : portString : _ <- getArgs + confDomainString : ipString : portString : bootstrapHost : bootstrapPortString : _ <- getArgs pure $ FediChordConf { confDomain = confDomainString , confIP = toHostAddress6 . read $ ipString , confDhtPort = read portString + , confBootstrapNodes = [(bootstrapHost, read bootstrapPortString)] }