mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-09 03:44:23 +00:00
mutable: cheap padding hack to make zfec tolerate short files
This commit is contained in:
parent
bf84b191c5
commit
61d9ab7690
@ -891,10 +891,16 @@ class Publish:
|
||||
|
||||
# now apply FEC
|
||||
self.MAX_SEGMENT_SIZE = 1024*1024
|
||||
data_length = len(crypttext)
|
||||
if len(crypttext) < 10:
|
||||
# TODO: FEC doesn't handle short (or empty) strings very well, so
|
||||
# give it something longer and we'll trim the results later. For
|
||||
# some reason I suspect the lower limit is k**2
|
||||
crypttext = crypttext + "\x00"*(10-len(crypttext))
|
||||
|
||||
segment_size = min(self.MAX_SEGMENT_SIZE, len(crypttext))
|
||||
# this must be a multiple of self.required_shares
|
||||
segment_size = mathutil.next_multiple(segment_size,
|
||||
required_shares)
|
||||
segment_size = mathutil.next_multiple(segment_size, required_shares)
|
||||
self.num_segments = mathutil.div_ceil(len(crypttext), segment_size)
|
||||
assert self.num_segments == 1 # SDMF restrictions
|
||||
fec = codec.CRSEncoder()
|
||||
@ -913,7 +919,7 @@ class Publish:
|
||||
d.addCallback(lambda shares_and_shareids:
|
||||
(shares_and_shareids,
|
||||
required_shares, total_shares,
|
||||
segment_size, len(crypttext),
|
||||
segment_size, data_length,
|
||||
target_info) )
|
||||
return d
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user