mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-21 12:16:44 +00:00
Proper termination of POST stream's read.
This commit is contained in:
parent
39643b1dc1
commit
9ad312a90f
1 changed files with 14 additions and 8 deletions
|
|
@ -50,16 +50,22 @@ func (self *sequentialReader) ReadAt(target []byte, off int64) (n int, err error
|
|||
return
|
||||
}
|
||||
}
|
||||
n, err = self.reader.Read(target)
|
||||
dpaLogger.Debugf("Swarm: Read %d bytes into buffer size %d from POST, error %v.",
|
||||
n, len(target), err)
|
||||
if err != nil {
|
||||
for i := range self.ahead {
|
||||
self.ahead[i] <- true
|
||||
self.ahead[i] = nil
|
||||
localPos := 0
|
||||
for localPos < len(target) {
|
||||
n, err = self.reader.Read(target[localPos:])
|
||||
localPos += n
|
||||
dpaLogger.Debugf("Swarm: Read %d bytes into buffer size %d from POST, error %v.",
|
||||
n, len(target), err)
|
||||
if err != nil {
|
||||
dpaLogger.Debugf("Swarm: POST stream's reading terminated with %v.", err)
|
||||
for i := range self.ahead {
|
||||
self.ahead[i] <- true
|
||||
self.ahead[i] = nil
|
||||
}
|
||||
return
|
||||
}
|
||||
self.pos += int64(n)
|
||||
}
|
||||
self.pos += int64(n)
|
||||
wait := self.ahead[self.pos]
|
||||
if wait != nil {
|
||||
dpaLogger.Debugf("Swarm: deferred read in POST at position %d triggered.",
|
||||
|
|
|
|||
Loading…
Reference in a new issue