if [ch for ch in chunks if len(ch) != len(chunks[-1])]:
raise CorruptedShareFilesError("Share files were corrupted -- all share files are required to be the same length, but they weren't.")
- if len(chunks[-1]) == CHUNKSIZE:
- # Then this was a full read, so we're still in the sharefiles.
+ if len(chunks[-1]) > 0:
resultdata = dec.decode(chunks, shnums, padlen=0)
outf.write(resultdata)
byteswritten += len(resultdata)
if ((byteswritten - len(resultdata)) / (10*MILLION_BYTES)) != (byteswritten / (10*MILLION_BYTES)):
print str(byteswritten / MILLION_BYTES) + " MB ...",
else:
- # Then this was a short read, so we've reached the end of the sharefiles.
- resultdata = dec.decode(chunks, shnums, padlen)
- outf.write(resultdata)
+ if padlen > 0:
+ outf.truncate(byteswritten - padlen)
return # Done.
if verbose:
print
def test_filefec_min_shares_with_crcrlflf(self, noisy=VERBOSE):
return self._help_test_filefec("Yellow Whirled!A\r\r\n\n", 3, 8, numshs=3)
+ def test_filefec_mul_chunk_size(self):
+ return self._help_test_filefec(randstr(6176761), 13, 16)
class Cmdline(unittest.TestCase):
def test_basic(self, noisy=VERBOSE):