diff options
Diffstat (limited to 'Remote/Helper/ChunkedEncryptable.hs')
-rw-r--r-- | Remote/Helper/ChunkedEncryptable.hs | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/Remote/Helper/ChunkedEncryptable.hs b/Remote/Helper/ChunkedEncryptable.hs index 66e02da12..402a64891 100644 --- a/Remote/Helper/ChunkedEncryptable.hs +++ b/Remote/Helper/ChunkedEncryptable.hs @@ -60,19 +60,19 @@ chunkedEncryptableRemote -> Preparer Retriever -> Remote -> Remote -chunkedEncryptableRemote c preparestorer prepareretriever r = encr +chunkedEncryptableRemote c preparestorer prepareretriever baser = encr where - encr = r + encr = baser { storeKey = \k _f p -> cip >>= storeKeyGen k p , retrieveKeyFile = \k _f d p -> cip >>= retrieveKeyFileGen k d p , retrieveKeyFileCheap = \k d -> cip >>= maybe - (retrieveKeyFileCheap r k d) + (retrieveKeyFileCheap baser k d) (\_ -> return False) , removeKey = \k -> cip >>= removeKeyGen k , hasKey = \k -> cip >>= hasKeyGen k , cost = maybe - (cost r) - (const $ cost r + encryptedRemoteCostAdj) + (cost baser) + (const $ cost baser + encryptedRemoteCostAdj) (extractCipher c) } cip = cipherKey c @@ -87,8 +87,9 @@ chunkedEncryptableRemote c preparestorer prepareretriever r = encr where go (Just storer) = sendAnnex k rollback $ \src -> metered (Just p) k $ \p' -> - storeChunks (uuid r) chunkconfig k src p' $ - storechunk storer + storeChunks (uuid baser) chunkconfig k src p' + (storechunk storer) + (hasKey baser) go Nothing = return False rollback = void $ removeKey encr k storechunk storer k' b p' = case enc of @@ -103,7 +104,8 @@ chunkedEncryptableRemote c preparestorer prepareretriever r = encr safely $ prepareretriever k $ safely . go where go (Just retriever) = metered (Just p) k $ \p' -> - retrieveChunks retriever (uuid r) chunkconfig enck k dest p' sink + retrieveChunks retriever (uuid baser) chunkconfig + enck k dest p' sink go Nothing = return False sink h p' b = do let write = meteredWrite p' h @@ -114,15 +116,15 @@ chunkedEncryptableRemote c preparestorer prepareretriever r = encr readBytes write enck = maybe id snd enc - removeKeyGen k enc = removeChunks remover (uuid r) chunkconfig enck k + removeKeyGen k enc = removeChunks remover (uuid baser) chunkconfig enck k where enck = maybe id snd enc - remover = removeKey r + remover = removeKey baser - hasKeyGen k enc = hasKeyChunks checker (uuid r) chunkconfig enck k + hasKeyGen k enc = hasKeyChunks checker (uuid baser) chunkconfig enck k where enck = maybe id snd enc - checker = hasKey r + checker = hasKey baser {- The base Remote that is provided to chunkedEncryptableRemote - needs to have storeKey and retreiveKeyFile methods, but they are |