aboutsummaryrefslogtreecommitdiff
path: root/P2P/Annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joeyh@joeyh.name>2016-12-16 18:26:07 -0400
committerGravatar Joey Hess <joeyh@joeyh.name>2016-12-16 18:26:07 -0400
commit82bb3565a3b4ae4442d006b06c1bd487cba783a8 (patch)
tree6d7681bed722e263a67770852930bdd1754e07b5 /P2P/Annex.hs
parent097c82b17ed0f3c96d1ca1617f42c39650dc9ab2 (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.hs63
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