From c37238cae9b83aff0fc2413b3bb37f847c7949d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felf=C3=B6ldi=20Zsolt?= Date: Thu, 20 Sep 2018 09:46:39 +0200 Subject: [PATCH] les: fix retriever logic (#17705) --- les/retrieve.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/les/retrieve.go b/les/retrieve.go index 8ae36d82c..c3d788813 100644 --- a/les/retrieve.go +++ b/les/retrieve.go @@ -212,7 +212,7 @@ func (r *sentReq) stateRequesting() reqStateFn { // no need to go to stopped state because waiting() already returned false return nil } - case rpSoftTimeout: + case rpSoftTimeout, rpDeliveredInvalid: // last request timed out, try asking a new peer go r.tryRequest() r.lastReqQueued = true @@ -242,7 +242,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 }