mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-03-24 04:35:17 +00:00
offloaded: when uploading a file that failed to upload before, ask for the last byte of ciphertext, so the reader is prepared to give us the plaintext hashes
This commit is contained in:
parent
8063aa8b86
commit
e14dcb92e2
@ -164,7 +164,16 @@ class CHKCiphertextFetcher(AskUntilSuccessMixin):
|
||||
if os.path.exists(self._encoding_file):
|
||||
self.log("ciphertext already present, bypassing fetch",
|
||||
level=log.UNUSUAL)
|
||||
return self._done2()
|
||||
# we'll still need the plaintext hashes (when
|
||||
# LocalCiphertextReader.get_plaintext_hashtree_leaves() is
|
||||
# called), and currently the easiest way to get them is to ask
|
||||
# the sender for the last byte of ciphertext. That will provoke
|
||||
# them into reading and hashing (but not sending) everything
|
||||
# else.
|
||||
have = os.stat(self._encoding_file)[stat.ST_SIZE]
|
||||
d = self.call("read_encrypted", have-1, 1)
|
||||
d.addCallback(lambda ignored: self._done2())
|
||||
return
|
||||
|
||||
# first, find out how large the file is going to be
|
||||
d = self.call("get_size")
|
||||
@ -256,6 +265,7 @@ class CHKCiphertextFetcher(AskUntilSuccessMixin):
|
||||
return self._done2()
|
||||
|
||||
def _done2(self):
|
||||
self.log("done2", level=log.NOISY)
|
||||
self._readers = []
|
||||
self._done_observers.fire(None)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user