Explorar o código

les: fix retriever logic (#17705)

Felföldi Zsolt %!s(int64=7) %!d(string=hai) anos
pai
achega
c37238cae9
Modificáronse 1 ficheiros con 6 adicións e 2 borrados
  1. 6 2
      les/retrieve.go

+ 6 - 2
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
 	}