forked from cerc-io/plugeth
swarm/storage: Allow EOF at the end of the reader in the chunker. Handle the case when Read returns less than length of target slice
This commit is contained in:
parent
a45421baaf
commit
eb2f01aee8
@ -178,11 +178,15 @@ func (self *TreeChunker) split(depth int, treeSize int64, key Key, data io.Reade
|
||||
// leaf nodes -> content chunks
|
||||
chunkData := make([]byte, size+8)
|
||||
binary.LittleEndian.PutUint64(chunkData[0:8], uint64(size))
|
||||
_, err := data.Read(chunkData[8:])
|
||||
if err != nil {
|
||||
var readBytes int64
|
||||
for readBytes < size {
|
||||
n, err := data.Read(chunkData[8+readBytes:])
|
||||
readBytes += int64(n)
|
||||
if err != nil && !(err == io.EOF && readBytes == size) {
|
||||
errC <- err
|
||||
return
|
||||
}
|
||||
}
|
||||
select {
|
||||
case jobC <- &hashJob{key, chunkData, size, parentWg}:
|
||||
case <-quitC:
|
||||
@ -371,7 +375,6 @@ func (self *LazyChunkReader) join(b []byte, off int64, eoff int64, depth int, tr
|
||||
defer parentWg.Done()
|
||||
// return NewDPA(&LocalStore{})
|
||||
|
||||
|
||||
// chunk.Size = int64(binary.LittleEndian.Uint64(chunk.SData[0:8]))
|
||||
|
||||
// find appropriate block level
|
||||
|
Loading…
Reference in New Issue
Block a user