diff options
Diffstat (limited to 'les/retrieve.go')
-rw-r--r-- | les/retrieve.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/les/retrieve.go b/les/retrieve.go index 8ae36d82c..d77cfea74 100644 --- a/les/retrieve.go +++ b/les/retrieve.go @@ -217,6 +217,13 @@ func (r *sentReq) stateRequesting() reqStateFn { go r.tryRequest() r.lastReqQueued = true return r.stateRequesting + case rpDeliveredInvalid: + // if it was the last sent request (set to nil by update) then start a new one + if !r.lastReqQueued && r.lastReqSentTo == nil { + go r.tryRequest() + r.lastReqQueued = true + } + return r.stateRequesting case rpDeliveredValid: r.stop(nil) return r.stateStopped @@ -242,7 +249,11 @@ func (r *sentReq) stateNoMorePeers() reqStateFn { r.stop(nil) return r.stateStopped } - return r.stateNoMorePeers + if r.waiting() { + return r.stateNoMorePeers + } + r.stop(light.ErrNoPeers) + return nil case <-r.stopCh: return r.stateStopped } |