summaryrefslogtreecommitdiff
path: root/Assistant/Threads/TransferScanner.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Assistant/Threads/TransferScanner.hs')
-rw-r--r--Assistant/Threads/TransferScanner.hs15
1 files changed, 9 insertions, 6 deletions
diff --git a/Assistant/Threads/TransferScanner.hs b/Assistant/Threads/TransferScanner.hs
index cb02ed2f2..85275374d 100644
--- a/Assistant/Threads/TransferScanner.hs
+++ b/Assistant/Threads/TransferScanner.hs
@@ -22,6 +22,7 @@ import Utility.ThreadScheduler
import qualified Git.LsFiles as LsFiles
import Command
import Annex.Content
+import Annex.Wanted
import qualified Data.Set as S
@@ -105,18 +106,20 @@ expensiveScan st dstatus transferqueue rs = unless onlyweb $ do
in if null rs' then rs else rs'
go [] = noop
go (f:fs) = do
- mapM_ (enqueue f) =<< catMaybes <$> runThreadState st
- (ifAnnexed f findtransfers $ return [])
+ mapM_ (enqueue f) =<< runThreadState st
+ (ifAnnexed f (findtransfers f) $ return [])
go fs
enqueue f (r, t) = do
debug thisThread ["queuing", show t]
queueTransferWhenSmall transferqueue dstatus (Just f) t r
- findtransfers (key, _) = do
+ findtransfers f (key, _) = do
locs <- loggedLocations key
- let use a = return $ map (a key locs) rs
+ let use a = return $ catMaybes $ map (a key locs) rs
ifM (inAnnex key)
- ( use $ check Upload False
- , use $ check Download True
+ ( filterM (wantSend (Just f) . Remote.uuid . fst)
+ =<< use (check Upload False)
+ , ifM (wantGet $ Just f)
+ ( use (check Download True) , return [] )
)
check direction want key locs r
| direction == Upload && Remote.readonly r = Nothing