aboutsummaryrefslogtreecommitdiffstats
path: root/les/retrieve.go
diff options
context:
space:
mode:
Diffstat (limited to 'les/retrieve.go')
-rw-r--r--les/retrieve.go13
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
}