mutable: fix usage of NeedMoreDataError

This commit is contained in:
Brian Warner 2007-11-07 17:52:09 -07:00
parent c783128012
commit 247bfe8d58
2 changed files with 13 additions and 2 deletions

View File

@ -18,6 +18,8 @@ class NeedMoreDataError(Exception):
def __init__(self, needed_bytes):
Exception.__init__(self)
self.needed_bytes = needed_bytes
def __str__(self):
return "<NeedMoreDataError (%d bytes)>" % self.needed_bytes
class UncoordinatedWriteError(Exception):
pass
@ -372,7 +374,7 @@ class Retrieve:
return
if f.check(NeedMoreDataError):
# ah, just re-send the query then.
self._read_size = max(self._read_size, f.needed_bytes)
self._read_size = max(self._read_size, f.value.needed_bytes)
(conn, storage_index, peer_storage_servers) = stuff
self._do_query(conn, peerid, storage_index, self._read_size,
peer_storage_servers)

View File

@ -181,7 +181,16 @@ def dump_SDMF_share(offset, length, config, out, err):
data = f.read(min(length, 2000))
f.close()
pieces = mutable.unpack_share(data)
try:
pieces = mutable.unpack_share(data)
except mutable.NeedMoreDataError, e:
# retry once with the larger size
size = e.needed_bytes
f = open(config['filename'], "rb")
f.seek(offset)
data = f.read(min(length, size))
f.close()
pieces = mutable.unpack_share(data)
(seqnum, root_hash, IV, k, N, segsize, datalen,
pubkey, signature, share_hash_chain, block_hash_tree,