diff options
author | Joey Hess <joeyh@joeyh.name> | 2016-12-16 18:26:07 -0400 |
---|---|---|
committer | Joey Hess <joeyh@joeyh.name> | 2016-12-16 18:26:07 -0400 |
commit | 82bb3565a3b4ae4442d006b06c1bd487cba783a8 (patch) | |
tree | 6d7681bed722e263a67770852930bdd1754e07b5 /P2P/Annex.hs | |
parent | 097c82b17ed0f3c96d1ca1617f42c39650dc9ab2 (diff) |
Revert "p2p --link now defaults to setting up a bi-directional link"
This reverts commit 6aa7e136b5d246228723f4c9996bda11f66c4445.
On second thought, this was an overcomplication of what should be the
lowest-level primitive. Let's build bi-directional links at the pairing
level with eg magic wormhole.
Diffstat (limited to 'P2P/Annex.hs')
-rw-r--r-- | P2P/Annex.hs | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/P2P/Annex.hs b/P2P/Annex.hs index 56f94d2bb..9971762f5 100644 --- a/P2P/Annex.hs +++ b/P2P/Annex.hs @@ -11,8 +11,6 @@ module P2P.Annex ( RunMode(..) , P2PConnection(..) , runFullProto - , unusedPeerRemoteName - , linkAddress ) where import Annex.Common @@ -21,16 +19,9 @@ import Annex.Transfer import Annex.ChangedRefs import P2P.Protocol import P2P.IO -import P2P.Address -import P2P.Auth import Logs.Location import Types.NumCopies import Utility.Metered -import qualified Git.Command -import qualified Annex -import Annex.UUID -import Git.Types (RemoteName, remoteName, remotes) -import Config import Control.Monad.Free @@ -129,17 +120,6 @@ runLocal runmode runner a = case a of Left e -> return (Left (show e)) Right changedrefs -> runner (next changedrefs) _ -> return $ Left "change notification not available" - AddLinkToPeer addr next -> do - v <- tryNonAsync $ do - -- Flood protection; don't let a huge number - -- of peer remotes be created. - ns <- usedPeerRemoteNames - if length ns > 100 - then return $ Right False - else linkAddress addr [] =<< unusedPeerRemoteName - case v of - Right (Right r) -> runner (next r) - _ -> runner (next False) where transfer mk k af ta = case runmode of -- Update transfer logs when serving. @@ -172,46 +152,3 @@ runLocal runmode runner a = case a of liftIO $ hSeek h AbsoluteSeek o b <- liftIO $ hGetContentsMetered h p' runner (sender b) - -unusedPeerRemoteName :: Annex RemoteName -unusedPeerRemoteName = go (1 :: Integer) =<< usedPeerRemoteNames - where - go n names = do - let name = "peer" ++ show n - if name `elem` names - then go (n+1) names - else return name - -usedPeerRemoteNames :: Annex [RemoteName] -usedPeerRemoteNames = filter ("peer" `isPrefixOf`) - . mapMaybe remoteName . remotes <$> Annex.gitRepo - -linkAddress :: P2PAddressAuth -> [P2PAddressAuth] -> RemoteName -> Annex (Either String Bool) -linkAddress (P2PAddressAuth addr authtoken) linkbackto remotename = do - g <- Annex.gitRepo - cv <- liftIO $ tryNonAsync $ connectPeer g addr - case cv of - Left e -> return $ Left $ "Unable to connect with peer. Please check that the peer is connected to the network, and try again. (" ++ show e ++ ")" - Right conn -> do - u <- getUUID - v <- liftIO $ runNetProto conn $ do - authresp <- P2P.Protocol.auth u authtoken - lbok <- forM linkbackto $ P2P.Protocol.link - return (authresp, lbok) - case v of - Right (Just theiruuid, lbok) -> do - ok <- inRepo $ Git.Command.runBool - [ Param "remote", Param "add" - , Param remotename - , Param (formatP2PAddress addr) - ] - when ok $ do - storeUUIDIn (remoteConfig remotename "uuid") theiruuid - storeP2PRemoteAuthToken addr authtoken - if not ok - then return $ Right False - else if or lbok || null linkbackto - then return $ Right True - else return $ Left "Linked with peer. However, the peer was unable to link back to us, so the link is one-way." - Right (Nothing, _) -> return $ Left "Unable to authenticate with peer. Please check the address and try again." - Left e -> return $ Left $ "Unable to authenticate with peer: " ++ e |